0

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 を取得します。

リクエスト URL とコールバック URL が一致することを 100% 確認しました。

情報: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_friends_birthday,friends_checkins_home,storys_school 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=メール、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_education_history friends_likes,friends_location,manage_pages ForStationID: 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)
....

何かご意見は?さらに情報が必要な場合は、具体的な情報を提供できます。

4

1 に答える 1