1

このチュートリアルpageを使用して画像をアップロードし、ファン ページ ウォールに投稿しようとしています が、接続が機能していないようです。 ページ ウォールに画像を投稿できるようにページ パラメータを取得する方法についての提案はありません。 このコードは最新の SDK 3.1.1 から変更されています。




// Create our Application instance (replace this with your appId and secret).
$facebook = new Facebook(array(
    'appId'  => '***************',
    'secret' => '********************************',
));

// Get User ID
$user = $facebook->getUser();

if ($user) {
    try {
        $page_id = '***************';
        $page_info = $facebook->api("/$page_id?fields=access_token");
        if( !empty($page_info['access_token']) ) {
                $args = array(
                        'access_token'  => $page_info['access_token'],
                        'message'       => "I'm a Page!"
                );
                $post_id = $facebook->api("/$page_id/feed","post",$args);
        }
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}

// Login or logout url will be needed depending on current user state.
if ($user) {
    $logoutUrl = $facebook->getLogoutUrl(array( 'next' => 'http://myDoamin.com/logout_page.php' ));
} else {
    $loginUrl = $facebook->getLoginUrl(array('scope'=>'manage_pages,publish_stream'));
}
?>
<!doctype html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
    <head>
        <title>php-sdk</title>
        <style>
            body { font-family: 'Lucida Grande', Verdana, Arial, sans-serif; }
            h1 a {  text-decoration: none; color: #3b5998; }
            h1 a:hover { text-decoration: underline; }
        </style>
    </head>
    <body>
        <h1>php-sdk</h1>

        <?php if ($user): ?>
            <a href="<?php echo $logoutUrl; ?>">Logout</a>
        <?php else: ?>
            <div>
                Login using OAuth 2.0 handled by the PHP SDK:
                <a href="<?php echo $loginUrl; ?>">Login with Facebook</a>
            </div>
        <?php endif ?>

        <h3>PHP Session</h3>
        <pre><?php print_r($_SESSION); ?></pre>

        <?php if ($user): ?>
            <h3>You</h3>
            <img src="https://graph.facebook.com/<?php echo $user; ?>/picture">

            <h3>Your User Object (/me)</h3>
            <pre><?php print_r($page_info); ?></pre>
        <?php else: ?>
            <strong><em>You are not Connected.</em></strong>
        <?php endif ?>

    </body>
</html> 

アップロードはここで処理されます:

<?php
$app_id = "***************";
$app_secret = "********************************";
$post_login_url = "http://mydomain.com/upload.php";

$code = $_REQUEST["code"];

//Obtain the access_token with publish_stream permission 
if(empty($code)){ 
    $dialog_url= "http://www.facebook.com/dialog/oauth?"
     . "client_id=" .  $app_id 
     . "&redirect_uri=" . urlencode($post_login_url)
     .  "&scope=publish_stream";
    echo("<script>top.location.href='" . $dialog_url 
    . "'</script>");
 }
else {
    $token_url="https://graph.facebook.com/oauth/access_token?"
     . "client_id=" . $app_id 
. "&redirect_uri=" . urlencode( $post_login_url )
     . "&client_secret=" . $app_secret
     . "&code=" . $code;
    $response = file_get_contents($token_url);
    $params = null;
    parse_str($response, $params);
    $access_token = $params['access_token'];

 // Show photo upload form to user and post to the Graph URL
 $graph_url= "https://graph.facebook.com/me/photos?"
 . "access_token=" .$access_token;

 echo '<html><body>';
 echo '<form enctype="multipart/form-data" action="'
 .$graph_url .' "method="POST">';
 echo 'Please choose a photo: ';
 echo '<input name="source" type="file"><br/><br/>';
 echo 'Say something about this photo: ';
 echo '<input name="message" 
         type="text" value=""><br/><br/>';
 echo '<input type="submit" value="Upload"/><br/>';
 echo '</form>';
 echo '</body></html>';
}
?>

の例SDKは似ており、これを実行するとユーザーとして機能します。しかし、ページとしてではありません

    if ($user) {
    try {
        // Proceed knowing you have a logged in user who's authenticated.
        $user_profile = $facebook->api('/me');
    } catch (FacebookApiException $e) {
        error_log($e);
        $user = null;
    }
}
4

2 に答える 2

2

参照: https://developers.facebook.com/docs/authentication/pages/

  1. アプリケーションにアクセス許可を付与manage_pagesします。
  2. を取得page_access_tokenし、ページ トークンを使用してページとしてページに API を投稿します。


例: php cURL upload : スタンドアロンの例で、sdk は必要ありません。

<?php 
function GetCH(){
// id of the album to upload
$ablum_id = "182325958494028";
// photo caption
$photo_caption = "testing app ablum upload";
// the page access token if you are uploading as the page
$page_access_token = "Add Your page token here.";
// url to your photo
$photo_url = "http://sphotos.xx.fbcdn.net/hphotos-ash3/544288_10150906170859577_732484576_9506566_417314835_n.jpg";
//
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://graph.facebook.com/".$ablum_id."/photos?url=".urlencode($photo_url)."&message=".urlencode($photo_caption)."&method=post&access_token=".$page_access_token."");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
$sendCH = curl_exec($ch);
curl_close($ch);
return $sendCH;
};

// call our function and upload photo, large photos may be slow
echo GetCH();
// if successful a return is shown
// { "id": "387851721274783", "post_id": "171535666239724_387851741274781" }
?>
于 2012-07-10T16:54:15.783 に答える
2

これがページとして投稿する方法です。Facebook の PHP SDKを使用しています。

最初に、ユーザーがアクセスできるすべてのページのリストを取得し、次にそれらのリストをユーザーに提示して、ユーザーがいずれかを選択できるようにします (コードはここには示されていません)。次に、そのデータを保存し、後でそのページとして投稿するために使用します。

ページのリストを取得する方法:

try {
        $result = $facebook->api("/me/accounts");
        $userpages = $result['data'];
} catch (FacebookApiException $e) {
        $userpages = array();
        $fbuser = null;
        $facebook->clearPersistentData();
}

今、私はそれらを繰り返します($settings投稿するために選択したページを含む、ユーザーの設定を含む配列です):

foreach ($userpages as $userpage) {
        if ($userpage['category'] == "Application")
                continue;    # My app doesn't work with Application pages.
        if ($settings['page']['id'] == $userpage['id']) {
                # This is the page I want.
                # $userpage['access_token'] has the access token.
        }
}

リクエストのaccess_tokenpostdata の配列に追加され、idここで使用されます。

return $facebook->api("/$id/feed/", "post", $postdata);
于 2012-07-10T20:01:42.447 に答える