我正在尝试manually build a login flow,以便我们的用户可以通过他们的Facebook帐户登录我们的网站。
无论如何,我已经陷入了“确认身份”的步骤,我已经通过使用$_GET["code"]
传递了我收到的代码来获取带有网址的access_token
https://graph.facebook.com/oauth/access_token?client_id={app-id}&redirect_uri={redirect-uri}&client_secret={app-secret}&code={code-parameter}
访问此网址时,我可以看到access_code和过期。无论如何,我想要做的是让程序访问页面,然后将整个内容(或只是access_code部分)复制到php代码中的变量中。
我试过这个:
$access_token = readfile("https://graph.facebook.com/oauth/access_token?client_id=834481703238074&redirect_uri=http://example.co/app.php&client_secret={secret_code}&code=$code");
但它不起作用。我该怎么办?解决这个问题的正确方法是什么?
答案 0 :(得分:0)
我从问题中理解的是,您只是希望从访问令牌网址获取访问令牌。 (如果我错了,请纠正我)
要做到这一点 -
$response = file_get_contents($token_url);
$params = null;
parse_str($response, $params);
$access_token = $params['access_token'];
答案 1 :(得分:0)
我已经创建了这个PHP函数,你可以使用它:
function getAccessToken($app_id, $secret, $base_url, $code) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://graph.facebook.com/v2.0/oauth/access_token?'. 'client_id=' . $app_id . '&redirect_uri=' . urlencode($base_url) . '&client_secret=' . $secret . '&code=' . $code);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$r = curl_exec($ch);
$r = strstr(str_replace('access_token=', '', $r), '&expires=', true);
return $r;
}
返回access_token
字符串,只需传递app_id
,app_secret
,redirect_uri
&来自code
$_GET['code']
您可能想知道为什么我使用strstr()
以及str_replace()
,因为/oauth/access_token
的标头是text/plain
而不是JSON
请记住,此access_token
最多持续2小时,您可以将其延长至持续60天