2012-02-08 127 views
1

Facebook的訪問令牌不能擴展

據我瞭解,訪問令牌只是適用於非常有限的時間,需要每一個應用程序被作爲文檔描述的啓動時間延長。 https://developers.facebook.com/docs/mobile/android/build/#extend_token

有2個問題與此:
1)extendAccessTokenIfNeeded()的函數,當令牌已過期(只有一個或兩個小時後不更新)

2)其他問題,當我繞過第一個時,是不能找到擴展令牌所需的意圖。

從SDK源:

Intent intent = new Intent(); 
intent.setClassName("com.facebook.katana", 
        "com.facebook.katana.platform.TokenRefreshService"); 
... 
ResolveInfo resolveInfo = 
      context.getPackageManager().resolveActivity(intent, 0); 
if (resolveInfo == null) { 
     return false; 
} 

resoveInfo這裏是空百達。

如何延長令牌什麼想法?我不想在分支過期時調用authenticate()函數。那會徹底摧毀用戶體驗!

THX 西蒙

+0

您可以使用如這裏所描述的離線訪問權限 - http://stackoverflow.com/a/2705505 – 2012-02-08 12:44:35

+1

我瞭解offline_access許可。然而,這不是根據FB文檔處理令牌過期的首選方式,也不會改變處理這種情況的有利方式不起作用的事實。 https://developers.facebook.com/docs/offline-access-deprecation/ – SimonSays 2012-02-08 18:45:22

+0

你有沒有想出任何解決方案?我有同樣的問題,我的調查導致相同的觀點:resolveInfo是空的,這就是爲什麼extendAccessToken不起作用...對此的新聞非常感謝! – Stefan 2012-07-23 21:02:47

回答

2

Facebook的Android SDK中作出刷新令牌服務的連接,延長訪問令牌,但服務是Facebook的Android應用程序的一部分,這意味着你的應用程序用戶需要安裝原生的Facebook第一。

備選:

  1. 您可以使用圖形API/auth /中中的access_token developers.facebook.com/docs/offline-access-deprecation/

  2. 我嘗試從Facebook要求描述iOS版SDK和它的作品:

GET api.facebook.com/method/auth.extendSSOAccessToken?access_token=

或JSON格式。 GET api.facebook.com/method/auth.extendSSOAccessToken?format=json & =的access_token

請前綴https://開頭上面所有的URL。

+0

我已經使用了脫機權限,當然這並不完美。這個看起來不錯,但我會嘗試在下一個版本的應用程序中這樣做。 – SimonSays 2012-02-28 02:08:47

+0

@SimonSays,我還分別具有與extendAccessTokenIfNeeded()函數的麻煩,我開始認爲這不僅是我的!你用上述方法成功了嗎? – Mel 2012-04-08 00:47:43

+0

我還沒有機會嘗試它,但它看起來像通常的Web應用程序訪問,所以它應該工作,我猜。讓我知道,如果你嘗試它,它的作品。 – SimonSays 2012-04-08 04:39:07