2

私は過去数日間、Graph API に取り組んできました。PHP-SDK を使用して API 呼び出しを実行しようとすると、応答として空の json オブジェクトが返されます。しかし、http://developers.facebook.com/docs/reference/api/で FB によって提供されるリンクからアクセス トークンをコピーすると、json 応答が返されます。

これは、リクエストで送信しているアクセストークンが原因だと思います。助けてください。

私のコード:

include_once "fbInit.php";
$access = $facebook->getAccessToken();
$user = $facebook->getUser();
echo $access;
if(!$user)
{
$loginUrl = $facebook->getLoginUrl();
header("Location:".$loginUrl);
}
$userWall = $facebook->api('/me/feed',array('access_token'=>$access))   ;
var_dump($userWall);
4

3 に答える 3

1

getAccessToken()は、SDKに内部的に保存されているアクセストークンのみを返し、トークンを生成またはフェッチしません。SDKを使用する利点の1つは、例の最後に向かって行うように、アクセストークンを直接渡す必要がないことです。ユーザーがgetLoginUrl()によって生成されたリンクをクリックすると、アクセストークンが自動的にSDKに保存され、apiメソッドが機能します。ただし、ユーザーのウォールに投稿するには、渡すよりも多くのパラメーターが必要です。これを行う方法の完全な例は、https: //developers.intern.facebook.com/docs/reference/php/facebook-api/で最近リリースされたPHPSDKドキュメントで確認できます。

于 2011-09-13T03:57:55.567 に答える
1

これは私のために働く:

index.php

<?php
    require_once("./config.php");
    $me = $facebook->api('/me');
    $access_token = $facebook->getAccessToken();
    $user = $facebook->getUser();
    $userWall = $facebook->api('/me/feed',array('access_token'=>$access_token));
    var_dump($userWall);
?>

config.php

<?php
    require_once("facebook.php");

    $app_id = "app_id";
    $app_secret = "app_secret";

    $facebook = new Facebook(array(
        'appId' => $app_id,
        'secret' => $app_secret,
        'cookie' => true
    ));

    if(is_null($facebook->getUser()))
    {
        header("Location:{$facebook->getLoginUrl(array('req_perms' => 'user_status,publish_stream,user_photos'))}");
        exit;
    }
?>
于 2012-06-26T15:37:25.693 に答える
0

この API は、アクセス トークンを取得することを想定しています - base_facebook.php 行 664 で access_token グラフ API を形成します。残念ながら、この API 呼び出しは、リダイレクト URI が原因で失敗した可能性があります。あなたのリダイレクト URI と私の場合 - テール "/" があり、この呼び出しが失敗しました。また、「https://graph.facebook.com/oauth/access_token?」を介して直接呼び出した場合、同じリダイレクト uri は問題ありませんでした。

base_facebook.php 内の _graph() 関数で facebook からの応答結果を出力するためにログを記録してみてください。これにより、私と同じ問題が発生しているかどうかをすばやく判断できます。

于 2011-10-03T13:46:09.393 に答える