【问题标题】:FacebookAuthorizationCodeUsedException when fetching a page access token获取页面访问令牌时的 FacebookAuthorizationCodeUsedException
【发布时间】:2013-06-25 13:14:55
【问题描述】:

我有现有的代码,它使用 clientID 的常量值来获取 FacebookPage 访问令牌。该静态值来自我部署到 GAE 时。但由于我有很多 appID,我希望它是动态的。这是完成授权并吐出代码的那一行:

String url = "https://www.facebook.com/dialog/oauth" + "?client_id=" + 
FacebookHelper.app().getAppId() + "&redirect_uri=" 
+getCallbackUrlForPageManager(stationId) + "&scope=" + permissions;

因此,我从 stationID 获取站对象,而不是 FacebookHelper.app().getAppId()(常量值),然后获取其字符串 AppID。

我绝对 100% 确认请求和回调 URL 匹配:

INFO :FacebookPageOAu:16-51-50:OAuthUrl.PageManager:https://www.facebook.com/dialog/oauth?client_id=370611419689390&redirect_uri=http://dwinq-monolith-dev.appspot.com/facebookPageOAuth/pageManager/1&scope=email,publish_actions,publish_stream,read_stream,offline_access,user_activities,user_birthday,user_checkins,user_education_history,user_hometown,user_interests,user_likes,user_location,user_notes,user_photos,user_relationships,user_status,user_videos,friends_about_me,friends_activities,friends_birthday,friends_checkins,friends_education_history,friends_hometown,friends_interests,friends_likes,friends_location,manage_pages

INFO :AdministratorSe:16-51-50:LoginURL:https://www.facebook.com/dialog/oauth?client_id=370611419689390&redirect_uri=http://dwinq-monolith-dev.appspot.com/facebookPageOAuth/pageManager/1&scope=email,publish_actions,publish_stream,read_stream,offline_access,user_activities,user_birthday,user_checkins,user_education_history,user_hometown,user_interests,user_likes,user_location,user_notes,user_photos,user_relationships,user_status,user_videos,friends_about_me,friends_activities,friends_birthday,friends_checkins,friends_education_history,friends_hometown,friends_interests,friends_likes,friends_location,manage_pagesForStationID:1

根据其他已解决问题的建议,我已经在我的 redirectURI 末尾使用不带正斜杠 (/) 的方式进行了测试。使用静态 clientID 完全没有斜线就可以了。

当我使用动态应用 ID(并且两个 URL 仍然完全匹配)时,我得到了这个没有斜杠的错误:

Uncaught exception from servlet
dwinq.common.social.FacebookAuthorizationCodeUsedException: Internal Facebook Exception: 100 message: 'Error validating verification code. Please make sure your redirect_uri is identical to the one you used in the OAuth dialog request
    at dwinq.spoke.servlet.FacebookOAuth.callOAuth(FacebookOAuth.java:280)
    at dwinq.spoke.servlet.FacebookOAuth.fetchTokenFromCallback(FacebookOAuth.java:850)
    at dwinq.hub.servlet.FacebookPageOAuth.fetchTokenfromCallbackForPageManager(FacebookPageOAuth.java:98)
    at dwinq.hub.servlet.FacebookPageOAuth.acceptedPageManagerPermissions(FacebookPageOAuth.java:73)
    at dwinq.hub.servlet.FacebookPageOAuth.handle(FacebookPageOAuth.java:30)
    at dwinq.common.servlet.AbstractServlet.doGet(AbstractServlet.java:50)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
....

当我使用斜线时,会出现这个错误:

Uncaught exception from servlet
java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Long.parseLong(Long.java:450)
    at java.lang.Long.<init>(Long.java:690)
    at dwinq.hub.servlet.FacebookPageOAuth.acceptedPageManagerPermissions(FacebookPageOAuth.java:41)
    at dwinq.hub.servlet.FacebookPageOAuth.handle(FacebookPageOAuth.java:30)
    at dwinq.common.servlet.AbstractServlet.doGet(AbstractServlet.java:50)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
....

有什么想法吗?如果需要更多信息,我可以提供具体信息。

【问题讨论】:

    标签: java gwt oauth-2.0 facebook-page facebook-access-token


    【解决方案1】:

    解决了。如何?重定向 URI 在我不知道的情况下在另一个类中重建。我使用服务器端日志而不是本地服务器来仔细检查 URI。

    此外,我试图解析 URI,假设最后一个斜杠不在 redirectURI 的末尾,这是不正确的。

    【讨论】:

      猜你喜欢
      • 2012-01-23
      • 1970-01-01
      • 2012-02-13
      • 1970-01-01
      • 2013-02-07
      • 2012-09-20
      • 2016-03-25
      • 2012-01-04
      相关资源
      最近更新 更多