0

我试图以这种方式得到它:

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_url = "www.domain.com"

在 Facebook: namespace: my_namespace

应用程序域:domain.com

网站网址http://www.domain.com/

这是我的设置,但仍然出现相同的错误

4

2 回答 2

1

您是否向他们发送现有的访问令牌?您首先应该有一个 access_token,您应该将其发回以获取扩展的到期访问令牌。

从错误中,我可以理解的是,您没有向他们发送令牌。

这是我在其他问题中回答的代码。它在 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    
?>
于 2012-11-15T13:44:27.793 回答
1

您不能在那里放置 App 令牌。它必须是用户访问令牌。请使用现有的用户访问令牌。

于 2012-11-15T13:45:41.327 回答