1

私はそれを使用しているユーザーのニュースフィードを表示しなければならないFacebookアプリケーションを作成していました。これを行うためにグラフAPIを使用しています。問題は、それが私に餌を与えないことです。私はそれを次のような友達に見せるために使用しました:

$friends = $facebook->api('/me/friends');

そしてそれはうまく働いています。

ニュースフィードの場合、私はこれを使用します:

$feeds   = $facebook->api('/me/home');

エラーが表示されます:

Fatal error: Uncaught IDInvalidException: Invalid id: 0 thrown in 
/home/content/58/6774358/html/test/src/facebook.php on line 560

これを使用してプロファイルフィード(壁)を取得しようとすると、次のようになります。

$feeds   = $facebook->api('/me/feed');

空の配列が表示されます。

これらのAPI呼び出しは、グラフAPIページに結果を表示していますが、アプリケーションで機能しない理由がわかりません。誰か助けてくれませんか。私の完全なコードは次のとおりです。

require_once 'src/facebook.php';

//アプリケーションインスタンスを作成します。$ facebook = new Facebook(array('appId' =>'xxxxx'、'secret' =>'xxxxx'、'cookie' => true、));

$session = $facebook->getSession();
    $fbme = null;
// Session based graph API call.
if (!empty($session)){
    $fbme = $facebook->api('/me');
}
if ($fbme) {
     $logoutUrl = $facebook->getLogoutUrl();
     echo '<a href="'.$logoutUrl.'">Logout</a>';
}else{
    $loginUrl = $facebook->getLoginUrl();
     echo '<a href="'.$loginUrl.'">Logout</a>';
}
$friends = $facebook->api('/me/friends?access_token='.$session["access_token"]);
$feeds   = $facebook->api('/me/feed?access_token='.$session["access_token"]); 
print('<pre>Herere:');print_r($feeds);die;
4

2 に答える 2

3

認証中にread_stream権限を要求しましたか?

どのような種類の認証/「許可」プロセスを実行しましたか?

JavaScript SDK?Facebook PHP SDK?XFBMLログインボタン?

編集-ここにあなたが始めるのに役立つリンクがあります:

Facebook PHP SDK

認証プロセス

Facebook.comでアプリを構築する

これらはすべてFacebookとgithubの公式ドキュメントです。


編集:このステップバイステップに従ってください:

元のコードから、次を探します。

$loginUrl = $facebook->getLoginUrl();

次のように変更します。

$loginUrl = $facebook->getLoginUrl(array('req_perms'=>'read_stream'));

最初にアカウントからアプリケーションをアンインストールします。

http://www.facebook.com/settings/?tab=applications

次に、もう一度試して、新しい[許可]ポップアップを表示します


編集

また、ifステートメントでのコードの配置についても説明します。このコードを使用します:

<?php
require_once 'src/facebook.php';
$session = $facebook->getSession();
$fbme = null;

if($session){
    $fbme = $facebook->api('/me');
    $friends = $facebook->api('/me/friends');
    $feeds = $facebook->api('/me/feed'); 
    $logoutUrl = $facebook->getLogoutUrl();
    echo '<a href="'.$logoutUrl.'">Logout</a>';
    echo "<pre>".print_r($feeds,TRUE)."</pre>";
}else{
    $loginUrl = $facebook->getLoginUrl(array('req_perms'=>'read_stream','canvas'=>1,'fbconnect'=>0));
    echo '<script> top.location.href="'.$loginUrl.'"; </script>>';
}

からアプリを再度アンインストールします

http://www.facebook.com/settings/?tab=applications

アプリケーションを再度開きます

于 2011-05-07T13:28:22.107 に答える
2

Facebook::api()Facebook PHP SDKがアクセストークンを処理する必要があります。呼び出し 時に、グラフAPIエンドポイントにアクセストークンを追加する必要はありません。

@dragonjetが指摘したように、フィードにアクセスするには、FBユーザーにread_stream拡張権限を要求する必要があります。ただし、貼り付けた例外はその種の問題と実際には一致せず、要求/me/homeは同様の例外(またはアクセスできないことに関するもの)をスローしません。

これはまだ権限の問題だと思うので、ここから修正を試みてください。適切な許可をリクエストする方法の例を次に示します。

$facebook = new Facebook(array(
    'appId' => FB_APP_ID, //put your FB APP ID here
    'secret' => FB_APP_SECRET, //put your FB APP SECRET KEY here
    'cookie' => true
));

$session = $facebook->getSession();

if ($session)
{
    //check to see if we have friends_birthday permission
    $perms = $facebook->api('/me/permissions');
}

 //we do this to see if the user is logged & installed
if (empty($session) || empty($perms['read_stream']))
{
    //get url to oauth endpoint for install/login
    $loginUrl = $facebook->getLoginUrl(array(
        //put the URL to this page, relative to the FB canvas
        //(apps.facebook.com) here vvv
        'next' => 'http://apps.facebook.com/path_to_your_app/index.php',
        'req_perms' => 'read_stream'
    ));

    //use javascript to redirect. the oauth endpoint cant be loaded in an
    //iframe, so we have to bust out of the iframe and load it in the browser
    //and tell the oauth endpoint to come back to the fb canvas location
    echo "<script>window.top.location='{$loginUrl}';</script>";
    exit;
}

print_r($facebook->api('/me/home'));
print_r($facebook->api('/me/feed'));
于 2011-05-07T19:49:35.903 に答える