2017-02-11 3 views
1

Я использую кнопку входа в facebook в своем приложении, но когда пользователь нажимает на логин, я должен получить его текущее местоположение с помощью gps . Я могу показать диалоговое окно предупреждения о том, что GPS не включен, если он не включен. не перенаправлять на Facebook страницу входа в систему, но она по-прежнему идет на facbook страницу входаFacebook Login Button handling

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() вашей деятельности

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(); 

Кроме того, в OnStop()

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

updateWithToken() в методе:

private void updateWithToken(AccessToken currentAccessToken) { 

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

это не помогло. –

Смежные вопросы