我在我的应用程序中使用facebook登录按钮但是当用户点击登录时我必须使用gps获取他当前的位置 我可以显示未启用GPS的警报对话框如果未启用它不应该重定向到Facebook登录页面,但它仍然会进入facbook登录页面
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 :(得分: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 {
}
}