PHP+;Facebook:如何获取访问令牌&x2B;60天访问令牌?
我正试图这样做:PHP+;Facebook:如何获取访问令牌&x2B;60天访问令牌?,php,facebook,facebook-graph-api,access-token,facebook-access-token,Php,Facebook,Facebook Graph Api,Access Token,Facebook Access Token,我正试图这样做: https://graph.facebook.com/oauth/access_token? client_id=APP_ID& client_secret=APP_SECRET& grant_type=fb_exchange_token& fb_exchange_token=EXISTING_ACCESS_TOKEN url地址中的所有变量都已正确设置,但当我将此url放入浏览器时,我得到:
https://graph.facebook.com/oauth/access_token?
client_id=APP_ID&
client_secret=APP_SECRET&
grant_type=fb_exchange_token&
fb_exchange_token=EXISTING_ACCESS_TOKEN
url地址中的所有变量都已正确设置,但当我将此url放入浏览器时,我得到:
{
"error": {
"message": "No user access token specified",
"type": "OAuthException",
"code": 1
}
}
一遍又一遍。我做错了什么
编辑:
我当前的设置:
脚本的地址:www.domain.com/folder/index.php
$my\u url=“www.domain.com”
在Facebook上:
名称空间
:我的名称空间
应用程序域:domain.com
站点URL:http://www.domain.com/
这是我的设置,但仍然收到相同的错误是否向他们发送现有的访问令牌?您应该首先拥有一个访问令牌,您应该将其发送回以获取扩展到期访问令牌 从错误中,我可以理解的是,您没有向他们发送令牌 这是我在另一个问题中回答的代码。它在FB文档中清楚地给出了。这一个获取短期令牌,将其发送回以扩展它,并获取长期访问令牌
<?php
//read more : https://developers.facebook.com/docs/howtos/login/server-side-login/
session_start();
$app_id = "xxxxxxxxxxxxxx";
$app_secret = "xxxxxxxxxxxxxxxx";
$my_url = "www.stackoverflow.com/"; // redirect url
$code = $_REQUEST["code"];
if(empty($code)) {
// Redirect to Login Dialog
$_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'] . "&scope=publish_stream,read_friendlists,email";
echo("<script> top.location.href='" . $dialog_url . "'</script>");
}
if($_SESSION['state'] && ($_SESSION['state'] === $_REQUEST['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);
$longtoken=$params['access_token'];
//save it to database
?>
您不能将应用令牌放在那里。它必须是用户访问令牌。请使用现有的用户访问令牌。谢谢Kishor的回答。我已经尝试了你的代码,但是我对$my\u url
有一个问题。facebook开发者部分中的URL是什么?假设我在domain.com/my\u addr/script\u中有一个应用程序,它包含上面的代码.php
,那么$my\u url
中应该包含什么?谢谢,应该是这样的,这个脚本应该在用户进入的登录页中。因此,它们被用于oauth,您将获得一个访问令牌。它们将被重定向到您希望它们访问的站点。那应该是$my_url.Kishor,请看一下更新的OP。因为我现在有点迷路了,我添加了当前的设置。仍然是一样的:API错误代码:191
-API错误描述:指定的url不属于应用程序
-错误消息:重定向\u uri不是绝对uri。检查RFC 3986。
它在文档的某个地方明确指出,“新的”/“延长的身份验证令牌”可能与以前的/现有的身份验证令牌相同,但不必相同。所以我会小心地相信这是事实。