0

デモ サイトで fb login connect を使用しています。次のコードを使用しました。

  window.fbAsyncInit = function() {
      try{
        FB.init({
            apiKey: '<MY APP KEY>',
            channelUrl : 'www.google.com'
        });

        FB.getLoginStatus(function(response){
            loginHandler(); 
        });
      }catch(error){}
  };  
    function loginHandler(success,fail)
    {

        try{
            if(success){
                alert('i am if');
                FB.api('/me', function(response,fail) {
                    alert("first name == " + response.first_name + "\n ln === " + response.last_name);
                });
            }
        }catch(error){}
    }

    $('#login').bind('click', function(response) {
        try{
            FB.login(loginHandler, {scope: 'email,user_likes'});
        }catch(error){}
    });

    $('#logout').bind('click', function() {
        try{
            FB.logout(function(response){});
        }catch(error){}
      });

今私の問題はそのアラートです('i am if'); Facebookに正しい資格情報を渡したかどうかを毎回表示しており、alert("first name == " + response.first_name + "\n ln === " + response.last_name); ユーザーが間違った資格情報を渡すとundefinedが表示され、ユーザーが正しい情報を渡して戻ってくると正しい情報が表示されます。

考えられるオプションの1つは、同様にチェックするif(response.first_name!=undefined){blah blah....}ことですが、認証をチェックする正しい方法ですか?

光を当ててください....

4

2 に答える 2

1

FB.login実装しようとしているのと同じように、成功/失敗のレポートを提供しFB.apiません。コールバックの 2 番目の引数はありません...

FB.logincallback は唯一の引数を取得します:

FB.getLoginStatusFB.loginまたはからの応答FB.logout。この応答オブジェクトには以下が含まれます。

status
ユーザーのステータス。接続済み、not_authorized、または不明のいずれか。
authResponse
authResponse オブジェクト。

FB.apicallback は、Graph API からの応答である 1 つだけの引数を取得します。これは、通常 (常にではありません)dataプロパティ、オブジェクト フィールド、ブール型の false またはerrorオブジェクト (およびプロパティを使用) を含みますmessagetypecode


loginHandler応答コールバックを修正して、正しい引数を処理するように変更できます。

function loginHandler(loginResponse){
  try{
    if(loginResponse.authResponse){
      alert('i am if');
      FB.api('/me', function(response) {
        alert("first name == " + response.first_name +
              "\n ln === " + response.last_name);
      });
    }
  }catch(error){}
}
于 2012-04-30T11:20:55.583 に答える
1

次のようなことを試してください:

//ログイン用
    $("#login").bind("クリック", function(e) {     
        var fbScope = "email,user_likes";
        FB.login(関数(応答) {          
           if(response.status == "接続済み"){
               console.log("ログインしました");
           }
        },{スコープ: fbScope});
    });
    //ログイン状態確認用
    FB.getLoginStatus(関数(応答){
        if (response.authResponse) {    
            var accessToken = response.authResponse.accessToken;
            FB.api('/me', function(response) {
                console.log('まだログインしています');
            });         
        }
    });
    //ログアウト用
    $("#logout").live("クリック", function(e) {        
        FB.getLoginStatus(関数(応答){           
            if(response.status == "接続済み"){
                FB.logout(関数(応答) {
                    console.log("ログアウトしました");                  
                });
           } そうしないと {
                console.log("ログインしていません");
           }
        });
    });
于 2012-04-30T11:23:16.343 に答える