[英]Facebook Graph API rejects newly created access token
今天早些時候,我們的Web應用程序的Facebook登錄流程已停止為某些用戶工作。 當我們嘗試獲取當前配置文件時,會返回錯誤。 它聲稱我們剛剛通過將用戶重定向到OAuth登錄流程而生成的訪問令牌已被拒絕。
給出的理由是:
訪問令牌無效,因為用戶未在超過90天內使用該應用
對我來說,這沒有任何意義,因為我們不會將訪問令牌存儲在除當前會話之外的任何位置,並且每次用戶使用Facebook登錄時都會重新創建它。
來自Spring Social的GET /me
調用的棧跟蹤如下所示:
ERR c.s.f.v.resource.AuthenticationResource Exception when connecting with Facebook
org.springframework.social.RevokedAuthorizationException: The authorization has been revoked. Reason: The access token is invalid since the user hasn't engaged the app in longer than 90 days.
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleFacebookError(FacebookErrorHandler.java:85)
at org.springframework.social.facebook.api.impl.FacebookErrorHandler.handleError(FacebookErrorHandler.java:59)
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63)
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:775)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:728)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:702)
at org.springframework.web.client.RestTemplate.getForObject(RestTemplate.java:350)
at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:220)
at org.springframework.social.facebook.api.impl.FacebookTemplate.fetchObject(FacebookTemplate.java:215)
問題可能與Facebook API的變化有關,但我不知道這會如何影響我們在每次登錄時創建的短期訪問令牌。
當我們的集成測試與測試用戶一起登錄時,我遇到了這個問題 - 以下JSON從Graph API返回:
{
"error": {
"message": "The access token is invalid since the user hasn't engaged the app in longer than 90 days.",
"type": "OAuthException",
"code": 190,
"error_subcode": 493,
"fbtrace_id": "F/1z2AsTRx8"
},
"timestamp_microsecond": "2018-05-30 11:22:01.353949"
}
這是一個更大的問題,因為我們的測試用戶不會與應用程序“互動”。 為了解決這個問題,我不得不:
一旦我完成了所有這些步驟,我的測試用戶(和集成測試)再次工作。
Facebook回復:
感謝您的聯系。 這實際上是我們已經在另一個錯誤報告中跟蹤的已知問題。
我要將您的報告與現有報告合並,因此我們可以在一個地方處理該問題。 請參閱此主題以獲取更新: http : //developers.facebook.com/bugs/194772814474841/
我的時間解決方案是使用JS SDK,它在我的情況下正常工作...
更新 :
這個問題似乎剛剛由Facebook修復。
我向 Facebook 提交了一個錯誤 ,他們目前(5/3/18)致力於解決問題。
這里和bug評論中提出了幾種解決方法。 總結一下:
auth_type=reauthorize
手動重新授權用戶 我正在尋找解決方案#2,因為它似乎是最直接的方式。
我在FB文檔中找到了這個鏈接: 刷新用戶訪問令牌
其中提到用戶必須在90天后重新建立令牌,因此如果出現此類錯誤,我們應該重定向用戶再次注冊。
他們甚至提到他們在本文檔的頂部刪除了非活躍用戶的標記。 也許他們犯了一個錯誤並刪除了所有用戶令牌。 無論如何,解決方案是重定向用戶重新訂閱。
臨時解決方案對於iOS,您需要更改SDK代碼以支持“重新授權”。 要更改源代碼,您需要使用CocoaPods下載它。 然后通過pod復制以下功能: https : //github.com/mavris/FacebookFix
在您的應用中添加權限代碼
喜歡
Android:fbLoginButton.setReadPermissions(Arrays.asList(EMAIL));
IOS:loginButton.readPermissions = @ [@“public_profile”,@“email”];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.