Facebook:在Android上刷新AccessToken

Fil*_*ipR 4 facebook facebook-graph-api facebook-authentication facebook-access-token facebook-sdk-4.0

他们在AccessToken文档中说:"使用Facebook SDK的原生移动应用程序将获得长期访问令牌,大约可以使用60天.当使用您的应用程序的人向Facebook提出请求时,这些令牌将每天更新一次.服务器".
这是否意味着只有当Facebook服务器的请求来自客户端Android应用程序时(我不确定如何解释"......使用您的应用程序的人..."),那么访问令牌将被刷新?
在我的应用程序中,我使用检索访问令牌AccessToken.getCurrentAccessToken(),将访问令牌发送到我的服务器,服务器向Facebook的服务器发出请求,目的是验证收到的访问令牌.
在这种情况下,是否还会刷新访问令牌?(在这种情况下,服务器正在向FB的服务器发出请求,而不是直接"使用我的应用程序的人")

  • 如果是,Android客户端应用程序中的Facebook SDK如何知道我的服务器向Facebook的服务器发出了请求?AccessToken.getCurrentAccessToken()Android客户端是否返回刷新的访问令牌?

谢谢

编辑:这可以帮助其他人节省时间:我发现访问令牌在初始化FacebookSDK时会在某些条件下自动刷新(Facebook文档没有清楚地解释访问令牌是如何刷新的 - 请参阅上面的问题).
请注意我使用的是FacebookSDK 4.0 for Android.
按照下面的步骤操作:

  1. FacebookSDK.sdkInitialize(Context, 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 requests)
    GraphRequestAsyncTask asyncTask = new GraphRequestAsyncTask(requests); asyncTask.executeOnSettingsExecutor();
  5. GraphRequestAsyncTask doInBackground()方法

if (connection == null) { return requests.executeAndWait(); } else { return GraphRequest.executeConnectionAndWait(connection, requests); }

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

public static List<GraphResponse> executeConnectionAndWait(
            HttpURLConnection connection,
            GraphRequestBatch requests)
Run Code Online (Sandbox Code Playgroud)
  1. 注意AccessTokenManager.getInstance().extendAccessTokenIfNeeded();线.顾名思义,每天最多扩展一次访问令牌.

Pan*_*ora 9

使用

   AccessToken.refreshCurrentAccessTokenAsync();
Run Code Online (Sandbox Code Playgroud)