0

ユーザーが現在ログインしていない場合でも、アプリを使用してFacebookの友達のウォール/タイムラインに投稿することはできますか?これが私が現在取り組んでいるコードです。これは、友達の壁にメッセージを投稿していることがわかります(friend_idを実際のプロファイルIDに置き換えてください)。これは機能しますが、ユーザーはこの操作を実行するためにログインする必要があります。このスクリプトを(ユーザーの介入なしに)自動的に実行したい場合はどうすればよいかわかりません。

<?php
require 'php_sdk/src/facebook.php';

$facebook = new Facebook(array(
  'appId'  => 'XXX',
  'secret' => 'XXX',
));

$session = $facebook->getUser();
$me = null;

if($session){
    try{
        $me = $facebook->api('/me');

        $facebook->api('/friend_id/feed', 'post', array('message'=>'hello without user!'));

    }catch(FacebookApiException $e){
        echo $e->getMessage();
    }
}

if($me){
    $logoutUrl = $facebook->getLogoutUrl();
    echo "<a href='$logoutUrl'>Logout</a>";
}else{
    $loginUrl = $facebook->getLoginUrl(array(
        'scope' => 'user_about_me,user_birthday,user_location,email,read_friendlists,friends_location,friends_birthday,publish_stream'
    ));
    echo "<a href='$loginUrl'>Login</a>";
}
?>

何か案は?コードサンプル、およびこれがどのように機能するかについて少しアイデアを得るのに役立つ特定のドキュメントへのリンクは、非常にありがたいです!

4

1 に答える 1

2

ユーザーがログインしたら、「アクセストークン」をトラップする必要があります

$facebook = new Facebook(array( 
  'appId'  => 'XXX', 
  'secret' => 'XXX', 
)); 

// NOTE: wrap these in try/catch blocks for safety - this is example only
$session = $facebook->getUser(); 
$access_token = $facebook->getAccessToken(); 

後で投稿するには、アクセストークンを使用します

$facebook = new Facebook(array( 
  'appId'  => 'XXX', 
  'secret' => 'XXX', 
)); 

// NOTE: wrap these in try/catch blocks for safety - this is example only
$facebook->setAccessToken($access_token); 
// Then check /me and you should still have the same user.
// Then post to /me/feed to post to the wall.

トークンは2日間有効です。必要に応じて、これを60日に延長できます。


編集:トークンを拡張するには、関数を呼び出します

$facebook->setExtendedAccessToken();

「getAccessToken」呼び出しの直前。

于 2012-09-07T03:57:32.147 に答える