[英]Facebook Access Tokens
我正在嘗試使用以下代碼獲取Facebook訪問令牌:我之前確實創建了自己的函數,但該函數返回了相同的錯誤,並且我無法解決問題所在。
function getAccessToken(){
$app_id = FB_APP_ID;
$app_secret = FB_SECRET_ID;
$my_url = FB_PAGE_URL;
$code = $_REQUEST["code"];
if(empty($code)) {
$_SESSION['state'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$dialog_url = "https://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url) . "&state="
. $_SESSION['state'];
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_REQUEST['state'] == $_SESSION['state']) {
$token_url = "https://graph.facebook.com/oauth/access_token?"
. "client_id=" . $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret . "&code=" . $code;
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$graph_url = "https://graph.facebook.com/me?access_token="
. $params['access_token'];
$user = json_decode(file_get_contents($graph_url));
echo("Hello " . $user->name);
}
else {
echo("The state does not match. You may be a victim of CSRF.");
}
}
來自服務器端身份驗證,但我一直收到此錯誤:
Warning: file_get_contents(https://graph.facebook.com/oauth/access_token?
client_id=ID HERE&redirect_uri=URLHERE&cli
ent_secret=SECRECT&code=AQCI5rNgw9zCPHWGozeT59asg7_022u5tVc5XSef49BiX
IaF5_MAMqFwsqOAquUHgjOu_99ONwUV6IC7k-jV6DsWf9ni3jm8t59aHCBp1jrFaDthPbIKLNLQ-
fZgB5MLh1le5BAPKj_l57jhTLTBfOdxRU30mFCMYzMch8MYFpCmJ9GrjSSGwt0OKb_LNqMoRf8) [function.file-
get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request
有人知道解決辦法嗎?
file_get_contents
方法可能存在問題,因為您正在構建的url看起來不錯。
如果您搜索"facebook file_get_contents failed to open stream"
您將在此問題上獲得很多結果,而在堆棧溢出的地方很多。
看起來像HTTPS問題, file_get_contents
作為此線程中的狀態: [function.file-get-contents]:無法打開stream 。
也許嘗試發出HTTP請求的其他方法? 也許卷曲?
只是為了進行測試,請嘗試使用命令行中的curl與php腳本中嘗試過的URL相同,然后看看會得到什么。
查看請求響應,您尚未定義Facebook應用程序設置。
當您請求令牌時,您正在使用FB_APP_ID
, FB_SECRET_ID
和FB_PAGE_URL
,但是在響應中,我可以看到它們分別定義為:“ ID HERE”,“ SECRECT”和“ URLHERE”。
我已經設法使用PHP SDK來解決此問題,並且在與SDK進行了長時間的爭奪之后,使其能夠執行我想要的操作。
我的確也提出了一個同樣想法但又有另一個問題的問題。 現在已經解決了這個問題。
查看此問題以獲取此問題的答案: Facebook訪問令牌服務器端身份驗證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.