【问题标题】:unable to get access_token from facebook. it returns code parameter无法从 facebook 获取 access_token。它返回代码参数
【发布时间】:2011-09-09 13:28:44
【问题描述】:

我正在使用 php sdk。这是我的php代码

require 'src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => '123456',
  'secret' => '123456abcdef',
));

// Get User ID
$user = $facebook->getUser();

//echo "-----".$user;

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    $user = null;
  }  

    //print_r($user_profile);
    $token = $facebook->getAccessToken();
    //echo $token;
    // store token

    if ($user_profile['id'] && $token) {
    $useradd = mysql_query("insert into fbdata (id,name,token) values ('".$user_profile['id']."','".$user_profile['name']."','".$token."')");
    if ($uyeekle)
    echo "Data added";
    }
}


if (!$user) {
    $args['scope'] = 'offline_access,read_stream,publish_stream';
    $loginUrl = $facebook->getLoginUrl($args); ?>
<a href="<?php echo $loginUrl ?>">Facebook Login</a>
<?php } ?>

facebook 使用代码参数重定向到我的网站,而不是访问令牌。它看起来不像访问令牌格式。没有|字符。但我会尝试使用此代码上传视频。

require 'src/facebook.php';


$facebook = new Facebook(array(
  'appId'  => '123456',
  'secret' => '123456abcdef',
));
$facebook->setFileUploadSupport(true);

$url = "https://graph-video.facebook.com/me/videos?title=abc&description=desc&access_token=ABAD........AZDZD";


$attachment = array(
'description' => 'desc',
'title' => 'abc'
);


$attachment["file"] = '@' . realpath("123.mp4");

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $attachment);

$data = curl_exec($ch);
echo $data;

此代码返回视频 ID。然后我想从该地址获取视频信息 https://graph.facebook.com/123456?access_token=ABAD........AZDZD

但它总是说假的。我的错在哪里?

【问题讨论】:

    标签: facebook video upload facebook-php-sdk


    【解决方案1】:

    使用代码而不是访问令牌重定向是预期的行为,由Facebook Authentication docs 确认。使用服务器端身份验证 (PHP SDK) 时,Facebook 将重定向到 http://YOUR_URL?code=A_CODE_GENERATED_BY_SERVER。然后,您必须自己将此代码解析为访问令牌(您可以通过调用 $facebook-&gt;getAccessToken() 来完成)。正如您所说,您可以使用此访问令牌(不是重定向中的代码)进行 API 调用。

    如果您使用的是 Facebook PHP SDK,您应该只使用它来进行这些 API 调用。我不确定上传视频的具体细节,但应该如下所示:

    $facebook = new Facebook(array(
        'appId'  => '123456',
        'secret' => '123456abcdef',
        'fileUpload' => true,
    ));
    
    $attachment = array(
        'description' => 'desc',
        'title'       => 'abc',
        'file'        => '@' . realpath("123.mp4");
    );
    
    $result = $facebook->api('/me/videos', 'POST', $attachment);
    var_dump($result);
    

    【讨论】:

    • 首先感谢您的回复。我正在使用“代码”成功上传。没有问题。我想获取视频信息,但我做不到。
    • 我明白了。我很困惑,因为这与标题中的问题不同。
    猜你喜欢
    • 1970-01-01
    • 2011-04-21
    • 1970-01-01
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-05-23
    • 2017-02-07
    相关资源
    最近更新 更多