我试图这样做:
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
网址中的所有变量都已正确设置,但是当我将此网址放入浏览器时,我得到:
{
"error": {
"message": "No user access token specified",
"type": "OAuthException",
"code": 1
}
}
一遍又一遍。我做错了什么?
修改
我目前的设置:
脚本的地址:www.domain.com/folder/index.php
$my_url = "www.domain.com"
在Facebook:
namespace
:my_namespace
应用域名:domain.com
网站网址:http://www.domain.com/
这是我的设置,但仍然收到相同的错误
答案 0 :(得分:1)
您是否向他们发送现有的访问令牌?您应首先拥有一个access_token,您应该发送回来获取扩展的到期访问令牌。
从错误中我可以理解的是,你没有向他们发送令牌。
这是我在其他一些问题中回答的代码。它在FB docs中明确给出。这个获取了短暂的令牌,将其发回以扩展它,并获得长期存在的access_token。
<?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
?>
答案 1 :(得分:1)
您无法在其中放置App令牌。它必须是用户访问令牌。请使用现有的用户访问令牌。