2010-07-29 131 views
4

我遇到了問題。Facebook頁面上的用戶標識頁籤(signed_request)

我有自定義頁面選項卡,並查看當前用戶。 我要求用戶將擴展權限授予他的個人資料(使用Facebook.showPermissionDialog)。 如果他授予權限,理論上我可以訪問Graph API和其他東西。 但是當我從Facebook分析新的signed_request參數,我得到oauth_token,綁定到當前頁面選項卡,而不是用戶配置文件。換句話說,對Graph API方法'me'的請求爲我提供了自定義頁面配置文件。我想獲得用戶的個人資料!我應該如何訪問它?

如何在Facebook選項卡上訪問用戶的Graph API?

回答

2

選項卡比普通應用程序更有限。它不知道誰在訪問它,除非他們與該選項卡交互。基本上它強調一個標籤對於安裝它的用戶是有用的,而不是訪問者。從docs

  • 它不知道瀏覽者是誰,當用戶第一次訪問的標籤。 Facebook發送fb_sig_user和fb_sig_profile_user參數,它們都包含配置文件所有者的用戶ID。
  • 如果查看用戶與選項卡進行交互(如提交表單,採取引發新內容的AJAX加載的操作,或者跟隨加載在選項卡上的相對URL),則該用戶的UID將作爲應用程序發送給應用程序fb_sig_user參數,配置文件所有者的用戶標識將作爲fb_sig_profile_user參數發送。查看用戶的會話密鑰是密鑰,只有在用戶授權該應用程序時纔會發送。
  • 應用程序在所有者的應用程序選項卡上使用所有者的會話密鑰。
+0

但signed_request參數的一部分在於它是爲了解決這個問題。我和提問者有同樣的問題,儘管聽起來像他的解決方案也可以幫助我。 signed_request文檔確實建議用戶首先需要與應用程序交互,但這並沒有說得那麼清楚 - 我完全錯過了,直到剛剛重新閱讀。 – 2010-11-09 16:32:54

+0

只是爲了讓您知道,您的鏈接已損壞。參考:http://meta.stackexchange.com/q/101241/149820 – staticbeast 2011-08-08 22:17:12

3

我已經想清楚它是如何工作的。在用戶授予權限後,當通過Ajax在我的服務器上調用頁面時,Facebook發送當前用戶的signed_request(以及他的ID)。當頁面靜態加載 - 你得到頁面標籤的signed_request。希望它能幫助別人。

+0

如何解析/解碼負載回json對象? – cdpnet 2010-08-13 19:48:09

+0

請問您能解釋一下嗎?是否可以獲取正在查看其他用戶選項卡的用戶的UID? – balepc 2010-08-17 14:40:53

+0

@cdpnet,@balepc:有關signed_request過程的文檔,其中包括PHP示例代碼,位於Facebook的網站http://developers.facebook.com/docs/authentication/canvas;它的實施相對簡單。如果你有任何具體的問題,那麼可能值得開始一個新的問題。 – 2010-11-09 16:41:40