2017-02-11 105 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

它没有帮助。 –