我正在使用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
但它总是说错。我的错在哪里?
答案 0 :(得分: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);