2017-02-11 103 views
1

我使用Facebook登錄按鈕,在我的應用程序,但是當用戶點擊登錄我利用GPS 得到他當前的位置,我能夠顯示GPS的警告對話框中如果沒有啓用它不應該啓用不重定向至Facebook登錄頁面,但它仍然去facbook登錄頁面Facebook的登錄按鈕處理

loginButton = (LoginButton) findViewById(R.id.act_reg_fb_login); 
callbackManager = CallbackManager.Factory.create(); 
loginButton.setOnClickListener(this); 

處理的登錄按鈕點擊聽者

case R.id.act_reg_fb_login: 
     if(isGettingHomeEntityData) 

{ 
    List<String> permissions = new ArrayList<>(); 
    permissions.add("public_profile"); 
    permissions.add("email"); 
    permissions.add("user_likes"); 
    permissions.add("user_location"); 
    permissions.add("user_actions.books"); 
    loginButton.setReadPermissions(permissions); 
    loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 
      if (loginResult.getAccessToken() == null) { 
       showSignUpLoginIssue(Constants.ErrorIssue.ERR_WHILE_LOGIN); 
      } else { 
       getEmailFromFaceBookAndLogin(loginResult.getAccessToken()); 
      } 
     } 

     @Override 
     public void onCancel() { 
      UIUtility.showSnackBar(coolMain, getString(R.string.err_facebook_cancelled)); 
     } 

     @Override 
     public void onError(FacebookException error) { 
      Log.e("fb error", String.valueOf(error)); 
      UIUtility.showSnackBar(coolMain, error.getLocalizedMessage()); 
     } 
    }); 
    break; 
} 

else 

{ 
    initializeLocationVariables(); 
    break; 
} 
+0

發佈全碼其中'isGettingHomeEntityData'定義? – rafsanahmad007

+0

@ rafsanahmad007'isGettingHomeEntityData'爲布爾值 –

+0

如果它返回錯誤的值,那麼'onSuccess'方法將被調用 – rafsanahmad007

回答

1

中的onCreate試試這個()你的活動

在的onStop()

@Override 
public void onStop() { 
    super.onStop(); 
    accessTokenTracker.stopTracking(); 
} 

private AccessTokenTracker accessTokenTracker; 

    callbackManager = CallbackManager.Factory.create(); 
    updateWithToken(AccessToken.getCurrentAccessToken()); 
    accessTokenTracker = new AccessTokenTracker() { 
     @Override 
     protected void onCurrentAccessTokenChanged(AccessToken oldToken, AccessToken newToken) { 
      updateWithToken(newToken); 
     } 
    }; 
    accessTokenTracker.startTracking(); 

同樣在updateWithToken()方法:

private void updateWithToken(AccessToken currentAccessToken) { 

    if (currentAccessToken != null) { 
     LoginManager.getInstance().logOut(); 
    } else { 
    } 
} 
+0

它沒有幫助。 –