我现有的代码使用clientID的常量值来获取FacebookPage访问令牌。这个静态值来自我部署到GAE时。但由于我有很多appID,我希望这是动态的。这是完成授权并吐出代码的行:
String url = "https://www.facebook.com/dialog/oauth" + "?client_id=" +
FacebookHelper.app().getAppId() + "&redirect_uri="
+getCallbackUrlForPageManager(stationId) + "&scope=" + permissions;
因此,取代FacebookHelper.app()。getAppId()(常量值),我从stationID获取一个站对象,然后获取其String AppID。
我绝对100%确认请求和回调网址匹配:
我在redirectURI的末尾没有使用正斜杠(/)进行测试,并提出其他已解决的问题。使用静态clientID,完全没有斜线就完成了。
当我使用动态应用ID时(两个网址仍完全匹配),我收到此错误时没有斜线:
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)
....
有什么想法?如果需要更多信息,我可以提供具体信息。
答案 0 :(得分:0)
解决。怎么样?重定向URI在另一个类中重建,我没有意识到。我使用服务器端日志而不是本地服务器来仔细检查URI。
另外,我试图解析URI,假设最后一个斜杠不在redirectURI的末尾,这是不正确的。