他们在 AccessToken docu 中说以下内容:“使用 Facebook SDK 的 native 移动应用程序将获得长期访问 token ,有效期约为 60 天。当使用您的应用程序的人向 Facebook 服务器发出请求时,这些 token 将每天刷新一次。”
这是否意味着只有当对 Facebook 服务器的请求是从客户端 Android 应用程序发出时(我不确定如何解释“......使用你的应用程序的人......”)然后访问 token 才会被刷新?
在我的应用程序中,我使用 AccessToken.getCurrentAccessToken()
检索访问 token ,将访问 token 发送到我的服务器,然后服务器向 Facebook 的服务器发出请求,目的是验证接收到的访问 token 。< br/>
在那种情况下访问 token 也会被刷新吗? (在这种情况下,服务器正在向 FB 的服务器发出请求,而不是直接“使用我的应用程序的人”)
- 如果是,Android 客户端应用程序中的 Facebook SDK 如何知道我的服务器向 Facebook 的服务器发出了请求? Android 客户端中的
AccessToken.getCurrentAccessToken()
是否返回刷新的访问 token ?
谢谢
编辑:这可能有助于其他人节省时间:
我发现访问 token 在某些情况下会在初始化 FacebookSDK 时自动刷新(Facebook 文档没有清楚地解释访问 token 是如何刷新的 - 请参阅我上面的问题)。
请注意我使用的是 Android 版 FacebookSDK 4.0。
按照以下步骤操作:
FacebookSDK.sdkInitialize(上下文, InitializeCallback)
if (AccessToken.getCurrentAccessToken() != null && Profile.getCurrentProfile() == null)
Profile.fetchProfileForCurrentAccessToken()
Utility.getGraphMeRequestWithCacheAsync()
GraphRequest graphRequest = getGraphMeRequestWithCache(accessToken); graphRequest.setCallback(graphCallback); graphRequest.executeAsync();
- ...
executeBatchAsync(GraphRequestBatch 请求)
GraphRequestAsyncTask asyncTask = new GraphRequestAsyncTask(请求); asyncTask.executeOnSettingsExecutor();
- 查看
GraphRequestAsyncTask doInBackground()
方法
如果(连接== null){
返回请求.executeAndWait();
} 别的 {
返回 GraphRequest.executeConnectionAndWait(connection, requests);
}
对于这两种情况,代码将以这种方法结束:
public static List<GraphResponse> executeConnectionAndWait(
HttpURLConnection connection,
GraphRequestBatch requests)
- 注意
AccessTokenManager.getInstance().extendAccessTokenIfNeeded();
行。 顾名思义,它每天最多会扩展您的访问 token 一次。
最佳答案
您可以使用 refreshCurrentAccessTokenAsync
方法:
AccessToken.refreshCurrentAccessTokenAsync();
关于Facebook:在 Android 上刷新 AccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369906/