3

i spent all day searching for an answer.. but it seems that nothing can fix it. i guess every version had a different issue...

well it's pretty simple, i have this code:

    <?php
    include_once("facebook.php"); //include facebook SDK

    ######### edit details ##########
    $appId = '****'; //Facebook App ID
    $appSecret = '****'; // Facebook App Secret
    ##################################

    //Call Facebook API
    $facebook = new Facebook(array(
      'appId'  => $appId,
      'secret' => $appSecret,
      'cookie' => true
    ));

    $fbuser = $facebook->getUser();


    if ($fbuser) {
    // Do Something

    }
    else{               
    //Show login button for guest users
    $loginUrl = $facebook->getLoginUrl(array('redirect_uri'=>$homeurl,'scope'=>$fbPermissions));
    echo '<a href="'.$loginUrl.'"><img src="images/facebook-login.png" border="0"></a>';
    }
    ?>

i get 0 in get user every time. when i go to "login on facebook" and im not logged in, i get facebook login screen. when i go to "login on facebook" and im logged in, facebook redirect me to my page and i get 0 in get user again.

i'm tring to run it on my localhost, maybe thats the problem?

hope someone can help.. thx

4

2 に答える 2

5

同じ単純なログイン スクリプトを使用して同様の問題が発生しました。私はほとんど何でも試しましたが、何も役に立ちませんでした。(奇妙なことに、前日はすべてが正常に機能していました)。

そのため、「base_facebook.php」のデバッグを開始し、関数getAccessTokenFromCodeが例外なく(サイレントに)失敗したことがわかりました。

_oauthRequest の応答が、予想されるトークンの応答ではなく、エラー メッセージの応答を返すことが判明しました。

$access_token_response =
        $this->_oauthRequest(
          $this->getUrl('graph', '/oauth/access_token'),
            $params = array ('client_id' => $this->getAppId(),
                             'client_secret' => $this->getAppSecret(),
                             'redirect_uri' => $redirect_uri,
                             'code' => $code));

したがって、echo $access_token_response; を追加すると、この関数の直後に私の問題が見つかりました。

応答エラーは、アプリがネイティブ/デスクトップアプリとして構成されているというものでした。インターネットに変更した後、getUser(); 正しいユーザー ID を指定しました。

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

于 2013-04-04T13:12:24.963 に答える
-1

これを試してみてください。FB ログインにも苦労していたので、クラスメートが書いたコードです。私のために働いた。

<?php
    session_start();
    require_once 'facebook/facebook.php';

    $facebook = new Facebook(array(
      'appId'  => '3525325', <- fake appID ofcourse, enter your own
      'secret' => 'fauuf983f9f', <- fake secret, enter your own
    ));

    $user = $facebook->getUser();

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

    if ($user) 
    {
        $_fb['logouturl'] = $facebook->getLogoutUrl();
        $_fb['authed'] = true;

        echo '<h1>Logged in</h1>';
        echo 'Fbid: '.$user;

        echo "<br /><br /><pre>";
        print_r($_fb['user']);
        echo "</pre>";
    } 
    else 
    {
      $_fb['loginurl'] = $facebook->getLoginUrl(array('scope' => 'email'));
      $_fb['authed'] = false;
      echo '<a href="'.$_fb['loginurl'].'">Login with Facebook</a>';
    }
?>
<html>
    <head>
        <title>Login</title>
    </head>
    <body>
    </body>
</html>

お役に立てば幸いです。頑張ってください:) Facebookのログインは私に多くの苛立ちを引き起こしました:p

于 2013-03-29T09:12:57.197 に答える