2012-12-09 186 views
1

我做了一個應用程序,爲用戶註冊某個原因。該應用程序從他們的FB賬戶獲取電子郵件,姓名。facebook應用程序無法打開流

39: $token_url = "https://graph.facebook.com/oauth/access_token?client_id=".$app_id."&redirect_uri=".urlencode($my_url)."&client_secret=".$secret."&code=".$code; 

40: $access_token = file_get_contents($token_url); 

41: $graph_url = "https://graph.facebook.com/me?fields=id,name,email&".$access_token; 

42:$user = json_decode(file_get_contents($graph_url)); 

我得到了線40和42錯誤

[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /home/*********/index.php on line 40 
[function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in /home/*********/index.php on line 42 

,但嘗試之後纔來評價由用戶給出的領域,而不是在第一次啓動應用程序。這段代碼中是否有任何錯誤,或者我應該在腳本中的其他位置看看?

回答

0

請看看這個documentation爲實現服務器端身份驗證的正確方法,具體步驟6

響應的身體,你的代碼將接收並解析會 是這樣的:

access_token=USER_ACCESS_TOKEN&expires=NUMBER_OF_SECONDS_UNTIL_TOKEN_EXPIRES

你應該提取使用情況的access_token。

無論您何時遇到身份驗證問題,您的第一步應該是運行Open Graph Debugger中的access_token,以確保用戶和應用與正確的範圍綁定。

+0

我正在使用access_token。在考慮第6步後,我做了一些更改,但似乎沒有任何改變。調試器也說得對,可以訪問來自url的數據。 –

+0

$ response = file_get_contents($ token_url); $ params = null; parse_str($ response,$ params); $ _SESSION ['access_token'] = $ params ['access_token']; $ graph_url =「https://graph.facebook.com/me?access_token=」 。 $ params ['access_token']; ** –

+0

不,如果你取數據端點返回1:1未解析,你是__not__使用訪問令牌,因爲該端點返回的__不止__訪問令牌。 – CBroe

相關問題