Facebook Android SDK自动登录

3
我正在使用以下版本的facebook-sdk:
com.facebook.android:facebook-android-sdk:4.+

我在登录页面使用默认的Facebook登录按钮

<com.facebook.login.widget.LoginButton
    android:id="@+id/login_button"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="85dp" />`

以下是Java代码

 LoginManager.getInstance().logInWithReadPermissions(this, Arrays.asList(permissions));
 LoginManager.getInstance().registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
        @Override
        public void onSuccess(LoginResult loginResult) {
       //details intentionally hidden
 }

但是为了注销,我使用了一个自定义按钮,在点击后执行以下操作:

LoginManager.getInstance().logOut();
AccessToken.setCurrentAccessToken(null);

但是Facebook登录按钮会在没有被点击的情况下重新登录!这只会不断循环!我该怎么办?
1个回答

2

您需要在LoginButton上注册回调函数,以便只有在单击按钮时才调用它。

请使用以下代码:在OnCreate()中:

 loginButton = (LoginButton) findViewById(R.id.login_button);
 List<String> permissionNeeds = Arrays.asList( "public_profile", "email", "user_birthday", "user_friends");
loginButton.setReadPermissions(permissionNeeds);

loginButton.registerCallback(callbackManager,
        new FacebookCallback<LoginResult>() {

         @Override
            public void onSuccess(LoginResult loginResult) { and so on }

我使用LoginManager.getInstance().registerCallback,所以这个不起作用吗? - Faraz Ali
登出怎么办?LoginManager.getInstance.logOut();可以用吗? - Faraz Ali
LoginManager.getInstance().registerCallback...会起作用,但我猜你是在onCreate()中初始化它,所以每次调用时都会执行...你需要在按钮点击事件中调用它...然后注销将会起作用。 - rafsanahmad007

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接