【问题标题】:Facebook OAuthException - This authorization code has expired. [code=100]Facebook OAuthException - 此授权码已过期。 [代码=100]
【发布时间】: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


【解决方案1】:

显然您没有将 OAuth 代码交换为访问令牌。请参阅此处的文档如何做到这一点:Manually Build a Login Flow

【讨论】:

    猜你喜欢
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2014-10-07
    • 1970-01-01
    • 1970-01-01
    • 2013-02-20
    • 2018-03-30
    • 2016-03-05
    相关资源
    最近更新 更多