2012-06-26 55 views
1

我遇到了在需要訪問Facebook的頁面之間傳遞數據的問題。Facebook身份驗證對話框 - 將數據傳遞到redirect_uri

下面是一個簡單的例子:
1 - 有數據({STR: 「123」})(但仍沒有得到Facebook的訪問)
然後重定向到facebook_authentication其重定向到REDIRECT_URI(第2頁)
Page 2 - 需要從第一頁獲取數據,但它被facebook auth對話中斷(第2頁需要facebook訪問來提交str數據)。

有什麼辦法可以將數據從第一頁通過auth對話框傳遞給第2頁?
就像這樣:auth_url..parameters ..?str = 123 然後我會在頁面2中得到它,比如$ _GET ['str'];

回答

1

我寫了一個在Facebook上運行過一次的應用程序,不得不處理這個問題。我用這樣的

$sAppId = '12345567999455'; 

$sFBUrl = 'http://www.facebook.com/pages/<name>/<id>?sk=app_<app_id>&app_data=key:val;key:val'; 

$sDialogUrl = 'https://www.facebook.com/dialog/oauth?client_id=' . $sAppId . '&redirect_uri=' . urlencode($sFBUrl) 

echo "<script>top.location.href='" . $sDialogUrl . "'</script>"; 

然後分析數據

$aAppData = explode(';', $aSignedRequest['app_data']); 

這給我們帶來了一個解決方案,你的情況

https://www.facebook.com/dialog/oauth?client_id=app_id&redirect_uri=your_url?str=123 

在我我用了一招我解釋過去的應用這裏:SSO Website-Network with Facebook Login

Regards

+0

但是這個URL不是auth對話框,是嗎? – funerr

+0

我使用了錯誤的網址,但現在應該是正確的。 –

+0

所以你只需要添加一個get參數給redirect_uri ...但不是redirect_uri應該是靜態的? (臉譜允許特定的一個,不是嗎?) – funerr

1

OAuth的過程實施過程中,我們面臨着同樣的問題,這兩個可能的解決方案是

  1. 保存數據的餅乾在第1頁和讀取cookie的網頁2.
  2. 其他的解決方案就是把會話中的數據。


我會建議使用1,如果它是特定的用戶數據。