2011-09-09 53 views
0

我使用PHP sdk。这里是我的php代码无法从facebook获取access_token。它返回代码参数

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

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

回答

1

用代码而不是访问令牌重定向是预期行为,由Facebook Authentication docs确认。当使用服务器端身份验证(PHP SDK)时,Facebook将重定向到http://YOUR_URL?code=A_CODE_GENERATED_BY_SERVER。然后,您必须自己将此代码解析为访问令牌(您只需调用$facebook->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); 
+0

首先是thx for reply。 我用“代码”成功上传。没有问题。我想获得视频信息,但我不能那样做。 –

+0

我明白了。我很困惑,因为那是一个与标题中不同的问题。 – PCheese