Facebook:在 Android 上刷新 AccessToken

标签 facebook facebook-graph-api facebook-access-token facebook-authentication facebook-sdk-4.0

他们在 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。
按照以下步骤操作:

  1. FacebookSDK.sdkInitialize(上下文, InitializeCallback)

    if (AccessToken.getCurrentAccessToken() != null && Profile.getCurrentProfile() == null)

  2. Profile.fetchProfileForCurrentAccessToken()

  3. Utility.getGraphMeRequestWithCacheAsync()

    GraphRequest graphRequest = getGraphMeRequestWithCache(accessToken); graphRequest.setCallback(graphCallback); graphRequest.executeAsync();

  4. ... executeBatchAsync(GraphRequestBatch 请求)
    GraphRequestAsyncTask asyncTask = new GraphRequestAsyncTask(请求); asyncTask.executeOnSettingsExecutor();
  5. 查看 GraphRequestAsyncTask doInBackground() 方法

如果(连接== null){ 返回请求.executeAndWait(); } 别的 { 返回 GraphRequest.executeConnectionAndWait(connection, requests); }

对于这两种情况,代码将以这种方法结束:

public static List<GraphResponse> executeConnectionAndWait(
            HttpURLConnection connection,
            GraphRequestBatch requests)
  1. 注意 AccessTokenManager.getInstance().extendAccessTokenIfNeeded(); 行。 顾名思义,它每天最多会扩展您的访问 token 一次。

最佳答案

您可以使用 refreshCurrentAccessTokenAsync方法:

AccessToken.refreshCurrentAccessTokenAsync();

关于Facebook:在 Android 上刷新 AccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369906/

相关文章:

ruby-on-rails - 错误 : undefined local variable or method `resource_class' when installing omniauth-twitter

Facebook——使用 event 和 event_member 执行 FQL "join"的最佳方式?

javascript - 在函数外部获取 Facebook 访问 token

asp.net - 为此我需要什么类型的 Facebook 身份验证/ token ?

Android Facebook 分享按钮再次要求输入密码

android - 在 Facebook accountkit Android 设备中获取 AccessToken null

facebook - 使用 Facebook Graph API 上墙时如何共享 Amazon 认证的 URL?

python - 使用 JS + Python 延迟查找 facebook cookie

jquery - 使用 API 获取 Facebook 个人资料图片并将其保存到项目文件夹

facebook-graph-api - 通过 Graph API 从 Facebook 页面移除粉丝