Facebook хранит токен доступа для автономного доступа с php sdk - действительно запутался - PullRequest
0 голосов
/ 08 февраля 2011

Я хочу, чтобы наше веб-приложение могло обновлять пользовательскую стену с помощью разрешения автономного доступа.Сейчас я хожу по кругу, потому что, похоже, не могу хранить токен доступа.Я попытался использовать example.php, но не сохранил сеанс (думаю, простите меня, я новичок)

Я хочу, чтобы он работал следующим образом:

Клики пользователей добавляют Facebook - то есть наше приложение одобрено пользователем (я могу сделать это, используя график api)

Возвращается токен, и мы сохраняем его в базе данных (этот бит я изо всех сил пытаюсь понять)чтобы включить пост позже.

Если кто-нибудь может дать мне пошаговое руководство, я бы очень признателен.Пожалуйста, не перенаправляйте меня на страницу разработчиков на Facebook.

Ответы [ 2 ]

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

Вы используете Javascript для аутентификации как

FB.login(function(response) {
    // As of Facebook's transition to OAuth 2.0 session has been replaced with authResponse
    // See https://developers.facebook.com/blog/post/525/
    // var access_token = response.session.access_token;
    var access_token = null;
    if (response.authResponse) {
        access_token = response.authResponse.accessToken;    

        if (response.perms) {
            // user is logged in, everithig is ok                     
        } else {
            // user is logged in, but did not grant any permissions
        }
    } else {
        // user is not logged in
    }
}, {perms:'read_stream,publish_stream,offline_access'});

Вы получите токен доступа в переменной javascript access_token. Вы можете сохранить этот токен доступа в базе данных и затем опубликовать его на стене, используя следующий код

function graphStreamPublish(){
           var body = document.getElementById("txtTextToPublish").value;
            FB.api('/me/feed', 'post', { message: body }, function(response) {
                if (!response || response.error) {
                     alert('Error occured');
                } else {
                     alert('Post ID: ' + response.id);
                }
           });
     }

Или, если вы хотите использовать php sdk, создайте файл authentication.php следующим образом.

<?php 
$app_id = "YOUR_APP_ID";
    $app_sec = "APP_SEC";
$canvas_page = "APP_CANVAS_PAGE_URL";
$scope = "&scope=user_photos,email,publish_stream";           $auth_url"http://www.facebook.com/dialog/oauth?client_id=" . $app_id . "&redirect_uri=" .       urlencode($canvas_page).$scope; 
$signed_request = $_REQUEST["signed_request"];   
list($encoded_sig, $payload) = explode(".", $signed_request, 2); 
$data = json_decode(base64_decode(strtr($payload, "-_", "+/")), true); 
     if (empty($data["user_id"])) {
 echo(""); } 
                     $access_token = $data["oauth_token"]; 
$user_id = $data["user_id"]; 
$user = json_decode(file_get_contents( "https://graph.facebook.com/me?access_token=" .                 $access_token)); 
function get_facebook_cookie($app_id, $application_secret) { 
$args = array();
parse_str(trim($COOKIE["fbs" . $app_id], "\""), $args); 
ksort($args);
$payload = ""; 
foreach ($args as $key => $value) { 
if ($key != "sig") { 
$payload .= $key . "=" . $value; 
} 
} 
    if (md5($payload . $application_secret) != $args["sig"]) {
return null; 
} 
return $args; 
} 
$cookie = get_facebook_cookie($app_id, $app_sec); 
?>

На странице, где вам нужно опубликовать на стене, укажите эту страницу и страницу API Facebook (facebook.php), а затем код для публикации на стене

$attachment = array('message' => 'some meesgae',
        'name' => 'This is my demo Facebook application!',
        'caption' => "Caption of the Post",
        'link' => 'mylink.com',
        'description' => 'this is a description',
        'actions' => array(array('name' => 'Get Search', 'link' => 'google.com')) );
    $result = $facebook->api('/me/feed?access_token='.$access_token, 'post', $attachment);

Я думаю, что это полезно ..

0 голосов
/ 19 июля 2011

Я создал простое демонстрационное приложение iframe, которое использует facebook php sdk, чтобы делать именно то, что нужно.

http://eagerfish.eu/using-facebook-off-line-access-to-post-on-users-wall/

Надеюсь, это кому-нибудь поможет.

...