FACEBOOK GRAPH / rest api: как войти в систему моего СОБСТВЕННОГО ПОЛЬЗОВАТЕЛЯ для обновления моего СТАТУСА с PHP - PullRequest
0 голосов
/ 01 февраля 2011

Я хочу обновить статус FAN-PAGE по PHP с помощью API api графа Facebook. Google говорит: не работает.

Теперь я хочу обновить свой статус пользователя с помощью PHP. Моя главная проблема заключается в том, как зарегистрировать моего собственного пользователя в Graph API (с PHP), без использования браузера и без забавных обходных путей PHP.

Ответы [ 3 ]

1 голос
/ 01 февраля 2011

Моя главная проблема - как войти в систему самостоятельно пользователь к графику API (с PHP), без использования браузера и без смешные обходные пути php.

Нет никакого способа для вас действовать от имени пользователя (даже вашего собственного пользователя), не взаимодействуя с ним хотя бы раз в браузере, чтобы получить offline_access.

Как получить разрешение offline_access и как его использовать оттуда, объясняется в этом ответе .

EDIT:
Пожалуйста, прочитайте комментарии! спасибо @zerkms!

1 голос
/ 01 февраля 2011

Вам нужно несколько вещей, чтобы обновить свой профиль facebook или фид страницы: приложение facebook ( client_id , client_secret ), profile_id и access_token (publish_stream, manage_pages, offline_access разрешения)

Вам нужен offline_access, потому что если нет, то маркер доступа истекает.Если вы читали, что вам не нужен offline_access, если вы уже указали publish_stream, это означает, что он вам не нужен всегда.

Опубликовать сообщение очень просто:

$data = array(
    'access_token' => $access_token,
    'message' => 'status message',
    );
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/{$profile_id}/feed");

Теперь, как получить profile_id и access_token , вы можете использовать мое приложение post panda или создать свой собственный скрипт.Я включу это здесь:

<code># arvin castro
# http://codecri.me/
# January 16, 2011

$client_id     = ''; # application id
$client_secret = ''; # application secret
$callbackURL   = 'http://'; # the URL of this script
$extendedPermissions = 'publish_stream,manage_pages,offline_access';

session_name('facebookoauth');
session_start();

if(isset($_GET['logout']) and $_SESSION['loggedin']) {
    $_SESSION = array();
    session_destroy();
}

if(isset($_GET['signin'])) {

    # STEP 1: Redirect user to Facebook, to grant permission for our application
    $url = 'https://graph.facebook.com/oauth/authorize?' . xhttp::toQueryString(array(
        'client_id'    => $client_id,
        'redirect_uri' => $callbackURL,
        'scope'        => $extendedPermissions,
    ));
    header("Location: $url", 303);
    die();
}

if(isset($_GET['code'])) {

    # STEP 2: Exchange the code that we have for an access token
    $data = array();
    $data['get'] = array(
        'client_id'     => $client_id,
        'client_secret' => $client_secret,
        'code'      => $_GET['code'],
        'redirect_uri'  => $callbackURL,
        );

    $response = xhttp::fetch('https://graph.facebook.com/oauth/access_token', $data);

    if($response['successful']) {

        $var = xhttp::toQueryArray($response['body']);
        $_SESSION['access_token'] = $var['access_token'];
        $_SESSION['loggedin']     = true;

    } else {
        print_r($response['body']);
    }
}

if($_SESSION['loggedin']) {
    // Get Profile ID
    $data = array();
    $data['get'] = array(
            'access_token'  => $_SESSION['access_token'],
            'fields' => 'id,name,accounts',
            );  
    $response = xhttp::fetch('https://graph.facebook.com/me', $data);
    echo '<pre>';
    print_r(json_decode($response['body'], true));
    echo '
';} else {echo ' Войдите через Facebook ';}?>

Я использую свой класс-оболочку cURL, xhttp

1 голос
/ 01 февраля 2011

В обоих случаях вам необходимо получить разрешение publish_stream http://developers.facebook.com/docs/authentication/permissions

Это можно сделать с помощью FB.login ()

Дополнительная информация: http://developers.facebook.com/docs/authentication

После этого вы можете просто обновить статус с помощью графика api: http://developers.facebook.com/docs/reference/api/post

...