【发布时间】:2019-01-24 08:41:11
【问题描述】:
我已经为 ColdFusion 设置了 Facebook API SDK - https://github.com/affinitiz/facebook-cf-sdk
我已经设置了一个成功的登录过程,但是大约 10 分钟后,当我返回并刷新页面时,它显示以下错误:
此授权码已过期。 [代码=100]
FB 登录有什么遗漏吗?我是否打算手动检查某些内容以保持会话?
干杯
肖恩
<cfscript>
import facebook.sdk.FacebookApp;
import facebook.sdk.FacebookGraphAPI;
// Replace this with your appId and secret
APP_ID = "";
SECRET_KEY = "";
SCOPE = "publish_stream";
if (APP_ID is "" or SECRET_KEY is "") {
// App not configured
facebookGraphAPI = new FacebookGraphAPI();
} else {
// Create facebookApp instance
facebookApp = new FacebookApp(appId=APP_ID, secretKey=SECRET_KEY);
// See if there is a user from a cookie or session
userId = facebookApp.getUserId();
if (userId) {
try {
userAccessToken = facebookApp.getUserAccessToken();
facebookGraphAPI = new FacebookGraphAPI(accessToken=userAccessToken, appId=APP_ID);
userObject = facebookGraphAPI.getObject(id=userId);
userFriends = facebookGraphAPI.getConnections(id=userId, type='friends', limit=10);
authenticated = true;
} catch (any exception) {
// Usually an invalid session (OAuthInvalidTokenException), for example if the user logged out from facebook.com
// this is where the error occurs
userId = 0;
facebookGraphAPI = new FacebookGraphAPI();
}
} else {
facebookGraphAPI = new FacebookGraphAPI();
}
// Login or logout url will be needed depending on current user state.
if (userId) {
logoutUrl = facebookApp.getLogoutUrl();
} else {
parameters = {scope=SCOPE};
loginUrl = facebookApp.getLoginUrl(parameters);
}
}
【问题讨论】:
-
OAuth 响应中是否有
expires_in成员? -
我没有注意到。奇怪的是,如果您再次刷新页面,登录似乎再次处于活动状态。有什么想法吗?
-
code应该在您收到它后立即使用一次,以获取访问令牌 - 您使用访问令牌调用 API - 您是否尝试使用相同的代码不止一次? -
Igy - 我已经添加了我正在使用的代码。 access_token 存储在我可以在 SDK 中看到的会话变量中,以便使用。
标签: facebook facebook-graph-api coldfusion cfml