0

私のサイトでFacebook機能を使用してログインしています。問題は、認証が成功した後、$facebook->getUser()メソッドが0を返すことです。これは、コードの残りの部分に先行していないためです。この問題を解決するために、APP IDと秘密鍵を変更しました。また、新しいAPPを作成しましたが、それでも機能しません。また、グーグルでたくさんのことをしましたが、成功しませんでした。

以下は私のコードです:

public function facebookregisterAction() {
require 'auth/src/facebook.php';

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

$session = new Zend_Session_Namespace('user');
$user = $facebook->getUser();

if ($session->islogout != 1) {
       if ($user) {
            try {
                   $user_profile = $facebook->api('/me');                    
                }catch(Exception $e){}
       }
}

ありがとう

4

1 に答える 1

1

一般的な答えとして、facebook-php-sdkディレクトリのexample.phpから始めると便利だと思いました。

私の場合、テストアプリケーションのURLがサイトのURLと異なっていました。example.phpファイルは、問題を診断して修正するのに十分役立つエラーメッセージを提供しました。

実際の使い方の良い例でもあります。

そうは言っても、あなたが欠けているように見える部分があります。APIが非常に役立つ前に(公開情報を取得する以外に)、ユーザーはアプリのFacebookログインURLにアクセスする必要があります。このURLを見つけるには、次のことを試してください。

$url = $facebook->getLoginUrl();

クリックするためのリンクをユーザーに提供するか、ログインが必要な場合はユーザーをこのURLに静かにリダイレクトすることができます。「Hello、World!」タイプの開始は次のようになります。

if ($user) {
  $url = $facebook->getLogoutUrl();
  $message = "Click here to log out";
} else {
  $url = $facebook->getLoginUrl();
  $message = "Click here to log in";
}

print "<a href=$url>$message</a>";

ただし、example.phpファイルでカバーされているものにすぐに遭遇します。ユーザーがFacebookからログアウトしても、「アクセストークン」(セッションIDなど)はクリアされません。アプリケーションには引き続き有効なユーザーオブジェクトが表示されますが、FacebookにヒットするAPI呼び出しはすべて失敗します。

于 2012-12-04T04:43:20.053 に答える