谷歌日历API V3刷新令牌混淆



我使用CFC为Google Calendar V3 API由billeatman。我已经成功地将它集成到我的页面中,在这里我可以登录和验证并开始工作。当身份验证到期时,我的问题就开始了,即使会话在我的网站上仍然活跃。

我尝试将Google API返回的结构与Access_token和refresh_token一起存储在数据库表中。储存后,我只是困惑。我怎么称呼它?上面的GIT代码是这样写的:

<cfset application.oauth2.refreshToken() />

函数代码如下:

<cffunction name="RefreshToken" access="public" output="false" hint="I take the refresh_token from the authorization procedure and get you a new access token.">
    <cfset var strURL = base_auth_endpoint & "token">
    <cfhttp url="#strURL#" method="POST">
        <cfhttpparam name="client_id" type="formField" value="#variables.client_id#">
        <cfhttpparam name="client_secret" type="formField" value="#variables.client_secret#">
        <cfhttpparam name="refresh_token" type="formField" value="#getTokenStruct().refresh_token#">
        <cfhttpparam name="grant_type" type="formField" value="refresh_token">
    </cfhttp>
    <cfreturn manageResponse(cfhttp.FileContent)>
</cffunction>

但是我不知道如何将我存储在数据库中的令牌传递给refreshToken。所以我尝试的是,调用以下两个函数:

<cfset application.oauth2.SetRefresh_token('#getaccess.refreshtoken#')>
<cfset application.oauth2.SetAccess_token('#getaccess.accesstoken#')> 

在这个部分抛出错误:

<cfset application.oauth2.SetAccess_token('#getaccess.accesstoken#')>

上面写着"方法未在CFC中找到"。我迷路了。我如何保持oauth2活着的谷歌日历,直到我注销

<cffunction name="SetAccess_token" access="private" output="false" hint="setter for oauth access_token">
   <cfargument name="access_token" type="string" required="true">
   <cfset getTokenStruct()['access_token'] = arguments.access_token>
</cffunction>
<cffunction name="SetRefresh_token" access="public" output="true" hint="setter for oauth refresh_token">
   <cfargument name="refresh_token" type="string" required="true">
   <cfset getTokenStruct()['refresh_token'] = arguments.refresh_token>
</cffunction>

消息,"在cfc中未找到方法"是因为您正在从cfc外部调用私有方法SetAccess_tokenAccess="private"意味着它不能从cfc外部调用,因为它的作用域对类来说是私有的。将函数访问权限更改为access="public",您可以按原样调用classPath.publicFunction()

最新更新