2009-12-16 58 views
1

我有一個與Facebook連接一起使用的移動應用程序。在用戶授予擴展權限後,我無法獲得offline_access會話密鑰。在Facebook offline_access權限後獲取新的會話密鑰

這裏的用戶流量:

  1. 用戶進入我的網站首次
  2. 我送他們到m.facebook.com/tos.php?並通過我的API密鑰和密碼
  3. 在用戶登錄使用Facebook Connect
  4. 的Facebook它們返回到一個頁面在我的網站,mysite的/登錄-success.php在查詢字符串中的auth_token
  5. 在mysite的/ login-success.php我實例化FB api客戶端,並檢查我是否已經擁有offline_access會話密鑰:
    $facebook = new Facebook($appapikey, $appsecret);
  6. 如果他們還沒有提供offline_access FB給我一個臨時會話密鑰,我需要從用戶獲得offline_access權限,所以我轉發他們到www.facebook.com/connect/prompt_permissions.php?並在查詢字符串中傳遞offline_access。
  7. 用戶授權offline_access並獲得轉發到mysite的/權限,success.php

我遇到的問題是,在實例上的API客戶端後,權限,success.php會話密鑰我仍然臨時會話密鑰,而不是新的offline_access會話密鑰。

我發現獲得offline_access密鑰的唯一方法是刪除用戶的所有cookie,然後讓他們再次使用Facebook連接登錄。相當差的用戶體驗。

任何人都可以闡明如何使用Facebook API生成新的會話密鑰,即使已經存在(在我的情況下是臨時會話密鑰)?

回答

1

我正在爲我的FB Connect APP使用Java FB API。我認爲PHP的技巧是一樣的。

訣竅是迫使Facebook在授予您的權限後再次自動登錄您的用戶,以便您能夠捕獲脫機訪問會話密鑰並存儲在數據庫中以備將來使用。

步驟:1. 一旦用戶登錄您通過FB連接,顯示歡迎信息 2.要求用戶授予所有需要你的權限的應用程序與URL格式如下 http://www.facebook.com/連接/ prompt_permissions.php API_KEY = YOUAPIKEY & ext_perm = offline_access,read_stream,publish_stream &下一= HTTP:?//m.facebook.com/tos.php API_KEY = YOUAPIKEY & v = 1 &取消= CancelURL「>授予權限

  1. FB會回覆您的新身份驗證令牌,您可以獲得有效的離線評估密鑰。

希望這有助於

乾杯 詹姆斯

0

我真的沒有找到一個很好的解決這個問題。在我的情況下,我只是等到會話超時,當用戶不得不第二次登錄時,我可以捕獲offline_access項。

相關問題