我遇到一个问题,即用户在打开应用时看到的第一个活动中有一个Facebook登录按钮。问题是,如果他们已经登录到Facebook,我会收到一条消息,表示我已经登录,但我只能选择退出,而不是继续使用该应用程序。所以基本上我每次都要注销并重新登录以实际使用该应用程序。所以它说我已经登录了,一切都很好,但我无法继续我的应用程序的下一个活动。我不确定这是否有意,我没有实现某些内容,或者这是一个问题。这是我的代码:
我的onCreate方法:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
FacebookSdk.sdkInitialize(this.getApplicationContext());
setContentView(R.layout.main_login);
callbackManager = CallbackManager.Factory.create();
登录按钮的设置:
loginButton.setReadPermissions(Arrays.asList("public_profile, email, user_friends"));
}
LoginManager.getInstance().registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Intent myIntent = new Intent(getApplicationContext(), myActivity.class);
accessToken = AccessToken.getCurrentAccessToken();
GraphRequest request = GraphRequest.newMeRequest(
accessToken,
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
Log.v("LoginActivity", response.toString());
}
}
);
Bundle loginBundle = new Bundle();
loginBundle.putString("userInfo", "id, first_name, last_name, email");
request.setParameters(loginBundle);
request.executeAsync();
myIntent.putExtras(loginBundle);
startActivity(myIntent);
finish();
}
@Override
public void onCancel() {
// nothing yet
}
@Override
public void onError(FacebookException exception) {
// nothing yet
}
});
onActivityResult:
@Override
protected void onActivityResult(final int requestCode, final int resultCode, final Intent data){
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
}
答案 0 :(得分:0)
您可以检查用户是否已登录并直接进入您的活动
if (AccessToken.getCurrentAccessToken()!=null){
Intent myIntent = new Intent(getApplicationContext(), myActivity.class);
startActivity(myIntent);
}
答案 1 :(得分:0)
尝试这样,一旦用户完成登录就在共享首选项中有一个布尔标志将标志设置为true,同时打开应用程序检查该标志打开登录活动只有boolean标志为false,否则打开主要活动。
并为用户提供登出菜单等选项。