невозможно получить access_token от Facebook.возвращает параметр кода - PullRequest
0 голосов
/ 09 сентября 2011

Я использую 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;

этот код возвращает идентификатор видео. тогда я хочу получить видео информацию с этих адресов https://graph.facebook.com/123456?access_token=ABAD........AZDZD

но это всегда говорит ложь. где моя ошибка?

1 Ответ

1 голос
/ 10 сентября 2011

Перенаправление с кодом вместо токена доступа - ожидаемое поведение, подтвержденное документами Facebook Authentication . При использовании аутентификации на стороне сервера (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);
...