1

そのため、Facebook は認証プロセスを変更しました。また。PHP SDK の例は次のとおりです。

$user = $facebook->getUser();

if ($user) {
  try {
    $user_profile = $facebook->api('/me');
  } catch (FacebookApiException $e) {
    error_log($e);
    $user = null;
  }
}

しかし、まだ認証されていないユーザーをどのように認証するのでしょうか? elseステートメントと の結果への呼び出しを作成するだけ$facebook->getLoginUrl()ですか?

また、上記の例では、 の呼び出しで$facebook->getUser()ユーザー ID が返されるためエラーが発生しますが、呼び出しを試みるとアプリが失敗し$facebook->api('/me')てエラーが発生します。

致命的なエラー: OAuthException がキャッチされていません: 現在のユーザーに関する情報を照会するには、アクティブなアクセス トークンを使用する必要があります。/home/woohoobi/public_html/facebookv2/inc/facebook.phpの560行目にスローされます

認証されていないユーザーを認証する方法についての支援は素晴らしいでしょう。

4

3 に答える 3

5

あなたがするとき

$user = $facebook->getUser();

nullで$userないからといって、一部の API 呼び出しを行うための有効なアクセス トークンがあるわけではありません。ユーザーがログインしていることを意味します。

アクティブなアクセス トークンがあるかどうかを確認するには、質問に書いたコードのように、API 呼び出しを行う方法があります。

require "facebook.php";
$facebook = new Facebook(array(
    'appId'  => YOUR_APP_ID,
    'secret' => YOUR_APP_SECRET,
));

$user = $facebook->getUser();

if ($user) {
  // The user is logged in
  try {
    $user_profile = $facebook->api('/me');
    // Here : API call succeeded, you have a valid access token
  } catch (FacebookApiException $e) {
    // Here : API call failed, you don't have a valid access token
    // you have to send him to $facebook->getLoginUrl()
    $user = null;
  }
} // else : the user is not logged in

したがって、ユーザーを に送信する必要がある 2 つのケースが$facebook->getLoginUrl()あり、両方のケースで$user == null. したがって、次を追加するだけです。

<?php if ($user): ?>
    <a href="<?php echo $facebook->getLogoutUrl() ?>">Logout of Facebook</a>
<?php else: ?>
    <a href="<?php echo $facebook->getLoginUrl() ?>">Login with Facebook</a>
<?php endif ?>

完全なフローについては、十分に文書化されている Facebook PHP SDK の例を参照してください。

それが役立つことを願っています。

于 2011-05-27T10:04:55.330 に答える
2

これは私を助けました..たくさん!そのため、ユーザーは最初にアプリを受け入れてユーザーデータを使用する必要があります。

<body>
<?php

  if (!$user_id)
    echo("<script> top.location.href='" . $facebook->getLoginUrl() . "'</script>");

?>
于 2012-05-28T11:30:55.267 に答える
1

getUser()呼び出しが0を返すという同じ問題が発生していました。ある日は機能していましたが、次の日は機能しませんでした。私が気付いていなかったのは、PHPSDKがJSSDKと組み合わせて使用​​されることを意図しているということです。次の手順に従う必要があります:https ://developers.facebook.com/docs/reference/javascript/-後に設定を含めると、並べ替える必要があります。

于 2011-10-22T18:27:13.230 に答える