2017-05-12 4 views
0

現在ログインページにFacebookのログインボタンがあるコードがあります。そして今、facebookのログインボタンをクリックしたときに、既にFacebookにログインしているかどうかをチェックするようにしています。私はどのようにそれを行うには、 hereのFacebookのドキュメントを読んだが、私は自分のコードでこれをどこに適用するか分からない。ユーザーがfacebook sdkを使用してアプリにログインしているかどうかを確認してください

loginbutton

LoginButton loginButton = (LoginButton) findViewById(R.id.button_facebook_login); 
loginButton.setReadPermissions(Arrays.asList("email","public_profile")); 
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      Log.d("LoginResult : ", loginResult.getAccessToken().getToken()); 
      GraphRequest request = GraphRequest.newMeRequest(
        loginResult.getAccessToken(), 
        new GraphRequest.GraphJSONObjectCallback() { 
         @Override 
         public void onCompleted(JSONObject object, GraphResponse response) { 
          Log.v("LoginActivity", response.toString()); 

          try{ 

           // Application code 
           String email = object.getString("email"); 
           String firstName = object.getString("first_name"); 
           String lastName = object.getString("last_name"); 

           ArrayList<String> publicProfile = new ArrayList<String>(); 

           publicProfile.add(email); 
           publicProfile.add(firstName); 
           publicProfile.add(lastName); 

           new RegisterGetList(LoginActivity.this,mProgressView,LoginActivity.this, publicProfile).execute(); 

          } 
          catch (JSONException e1){ 
           e1.printStackTrace(); 
          } 
         } 
        }); 

      Bundle parameters = new Bundle(); 
      parameters.putString("fields", "id,first_name,last_name,email"); 
      request.setParameters(parameters); 
      request.executeAsync(); 

     } 

答えて

0

あなたはそのユーザーIDが既に登録されているかどうか、あなたが問題を解決することができnot.Then確認する必要がバックエンドから私たちは、FacebookのユーザーアカウントIDを取得します。

0

メールを共有設定に保存し、共有設定がnullかどうかを確認できます。

SharedPreferences sp=PreferenceManager.getDefaultSharedPreferences(context); 
String email=sp.getString("email",null); 
if(email==null) 
{ 
//first log in 
//store the email in shared prefernces 
    SharedPreferences.Editor editor = sharedPreferences.edit() 
    editor.putString("email",value); 
    editor.apply(); 
}  
else 
{ 
//already logged in 
} 

ユーザーがログアウトするとspをクリアします。

0

これをオンにすると、ユーザーがログインしているかどうかを確認できます。使用

if (AccessToken.getCurrentAccessToken() != null) { 
     getUserDetails(); 
    } else{ 
     loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 
    } 

となってユーザーの詳細:ログインボタンのonClickで

private void getUserDetails() { 
    GraphRequest request = GraphRequest.newMeRequest(
      AccessToken.getCurrentAccessToken(), 
      new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(
         JSONObject object, 
         GraphResponse response) { 

        try { 
         Log.i(TAG, "Response >>: " + object.toString()); 

         String userID = object.getString("id"); 
         String strName = object.getString("name").toString(); 
         String strgander = object.getString("gender").toString(); 
         String strEmail = object.getString("email").toString(); 


        } catch (JSONException e) { 
         e.printStackTrace(); 
        } 

       } 
      }); 
    Bundle parameters = new Bundle(); 
    parameters.putString("fields", "id,name,email,link,gender,age_range,cover,picture,location"); 
    request.setParameters(parameters); 
    request.executeAsync(); 

} 

セット許可。

loginButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
       loginButton.setReadPermissions(Arrays.asList("public_profile", "email")); 
     } 
    }); 

セットのコールバックは最終的に自分のログインボタンのするonSuccessコールバック内部 "getUserDetails()" を呼び出し、

 @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
     callbackManager.onActivityResult(requestCode, resultCode, data); 

} 

を使用して、ボタンをログインとします。

関連する問題