2011-02-08 3 views
0

Google 웹 앱이 오프라인 액세스 권한을 사용하여 사용자 벽을 업데이트 할 수있게하려고합니다. 액세스 토큰을 저장할 수없는 것 같아서 지금은 서클에서 돌아 다니고 있습니다. 나는 example.php를 사용하여 시도했지만 세션 다음과 같이 내가 작업 할 방법은php sdk로 오프라인 액세스를위한 액세스 토큰을 저장하는 페이스 북 - 정말 혼란 스러운가

(나는 생각한다, 나는 안돼서 용서해주십시오) 보유하고 있지 않다 :

사용자가 클릭 페이스 북을 추가를 즉, 우리의 응용 프로그램이 사용자에 의해 승인되었습니다. (그래프 API를 사용하여이 작업을 수행 할 수 있습니다.)

토큰이 반환되고 데이터베이스에 저장합니다 (이 비트를 사용하면 머리를 쓰려고 고심합니다).

누군가가 나에게 단계 가이드로 단계를 줄 수 있다면 정말 고맙겠습니다. 제발 페이스 북에서 개발자 페이지로 리디렉션하지 마십시오.

답변

1

는 다음과 같은 코드

를 사용하여 벽에 게시 그런 다음 변수 access_token.You 데이터베이스에서이 액세스 토큰을 절약 할 수 있습니다 자바 스크립트에서 액세스 토큰을 얻을 것이다

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'}); 

로 인증을 위해 자바 스크립트를 사용

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); 
?> 

다음 코드

$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); 

나는이이 도움이 벽에 게시이 페이지를 페이스 북의 API를 페이지 (facebook.php)를 포함 ..

+0

도움 주셔서 대단히 감사합니다. – Textus

관련 문제