0

私はあきらめようとしています。約 1 週間、Facebook 経由の認証という最も単純なことを試しています。認証するたびに(FacebookログインURLを介して)、getUser()およびapi( 'me')がnullを返します。

なぜ?

コード:

$facebook = new Facebook(array(
  'appId'  => '306597542762982',
  'secret' => '88XXXXXX7f1',
));
$user = $facebook->getUser();

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

if (!$user) {

  $loginUrl =  $facebook->getLoginUrl(array('scope'=>'user_actions.news,publish_stream,user_about_me,email,publish_actions'));

  print $loginUrl; exit;

} 

var_dump($facebook->api('me'));

SOS。

編集:投稿:

$params = array (
  'article' => 'http://fb.raal.co.il/content/view/$id/$title',
  'access_token' => $facebook->getAccessToken()
);



$out = $facebook->api( '/me/news.reads','post', $params);

var_dump($out); exit;
4

1 に答える 1

1

NullPointer が先に引用した、ユーザー ifaour からの続き:

現在の Facebook ユーザー ID $user を確認し、null が返された場合は、ユーザーを再認証する必要があります (または、カスタムの $_SESSION ユーザー ID 値を使用します - お勧めしません)。

require 'facebook/src/facebook.php';

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

$user = $facebook->getUser();

$photo_details = array('message' => 'my place');
$file='photos/my.jpg'; //Example image file
$photo_details['image'] = '@' . realpath($file);

if ($user) {
  try {
    // We have a valid FB session, so we can use 'me'
    $upload_photo = $facebook->api('/me/photos', 'post', $photo_details);
  } catch (FacebookApiException $e) {
    error_log($e);
  }
}

// login or logout url will be needed depending on current user state.
if ($user) {
  $logoutUrl = $facebook->getLogoutUrl();
} else {
// redirect to Facebook login to get a fresh user access_token
  $loginUrl = $facebook->getLoginUrl();
  header('Location: ' . $loginUrl);
}

ユーザーのウォールに写真をアップロードする方法に関するチュートリアルを作成しました。

追加情報で、これは役に立ちますか? これに関連して私が見つけた追加情報があります。

$facebook->getAccessToken();

どうやら、その呼び出しはアプリ アクセス トークンまたはユーザー アクセス トークンのいずれかを与えることができます。アクセス トークンで何をしようとしているかに応じて、適切な種類が必要になります。

または、実行しようとしている特定のアクセス許可を要求する必要がある場合があります。これについては、こちらを参照してください。

于 2012-10-14T07:11:36.477 に答える