2012-06-13 47 views
2
  1. 我希望人們用他們的Facebook帳戶登錄我的網站。
  2. 我需要從他們的Facebook個人拉一些信息,並將其添加到我的網站的數據庫

我已經使用的OAuth 2.0方法使一個重定向到該網址使用OAuth 2.0登錄Facebook

https://www.facebook.com/dialog/oauth? 
    client_id=YOUR_APP_ID 
    &redirect_uri=YOUR_REDIRECT_URI 
    &scope=COMMA_SEPARATED_LIST_OF_PERMISSION_NAMES 
    &state=SOME_ARBITRARY_BUT_UNIQUE_STRING 

我成功嘗試認證用戶,但現在出現了主要問題。如何訪問作爲響應發送的數據,我只能看到一個名爲code的變量GET以及一些長文本。我如何轉換爲可用數據?

我使用PHP爲我的網站

+0

你看看developers.facebook.com上的大量文檔嗎? 在那裏你可以找到一個在PHP中的工作示例來檢索用戶信息:https://developers.facebook.com/docs/reference/php/facebook-api/ – stUrb

回答

4

交易所對用戶訪問令牌

一旦用戶授權您的應用程序的代碼,你應該做一個服務器端請求交換上面的代碼返回給用戶的訪問令牌。

https://graph.facebook.com/oauth/access_token? 
client_id=YOUR_APP_ID 
&redirect_uri=YOUR_REDIRECT_URI 
&client_secret=YOUR_APP_SECRET 
&code=CODE_GENERATED_BY_FACEBOOK 

client_secret參數必須是應用程序的祕密,如應用程序設置中所示。針對這一請求的主體將是格式的URL編碼的字符串:

access_token=USER_ACESS_TOKEN&expires=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES 

您應該分析該字符串並使用值的access_token提出要求的圖形API。您還應該將訪問令牌保存在數據庫中,以便向API提出更多請求,而無需重新驗證用戶身份。

一旦達到訪問令牌到期時間,令牌將變得無效並且不能再用於對API的請求中。要獲得新的用戶訪問令牌,您必須再次通過此流程傳遞給用戶。但是,如果用戶沒有取消授權您的應用程序,並且您要求的權限超出了用戶已經授予您的應用程序的權限,則不會顯示任何對話框,並且用戶將被透明地重定向到您的redirect_uri並使用新代碼可以交換爲新的用戶訪問令牌。

如果沒有爲用戶訪問令牌交換代碼中的問題,授權服務器將發出HTTP 400和在響應中的主體返回錯誤作爲JSON對象:

{ 
    "error": { 
     "type": "OAuthException", 
     "message": "Error validating verification code." 
    } 
} 

爲了進一步參考結賬http://developers.facebook.com/docs/authentication/server-side/

發出請求到圖形API

有效的用戶訪問令牌,你可以請求從圖形API讀取和寫入數據。一個常見的第一個要求是獲得剛認證你的應用的用戶的基本信息(包括id和姓名):

https://graph.facebook.com/me?access_token=YOUR_USER_ACCESS_TOKEN 
+0

因此,你正在談論的反應,什麼是響應格式是GET響應還是必須使用其他方式來解析數據 – Abhijith

+0

該代碼可用作$ _GET ['code']變量。只需交換access_token的代碼,即可開始API調用以獲取用戶數據 –