Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP+;Facebook:如何获取访问令牌&x2B;60天访问令牌?_Php_Facebook_Facebook Graph Api_Access Token_Facebook Access Token - Fatal编程技术网

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。
它在文档的某个地方明确指出,“新的”/“延长的身份验证令牌”可能与以前的/现有的身份验证令牌相同,但不必相同。所以我会小心地相信这是事实。