java - Android中的Facebook登录弹出两个登录界面

标签 java android facebook facebook-graph-api

我已将 Facebook 登录集成到我的 Android 应用程序中。但是每当我点击“继续使用 Facebook”时,它会弹出两个登录屏幕,即当我输入凭据并继续时,不会返回到应用程序,还会有一个登录屏幕。如果只是取消它,它将返回到应用程序并登录。

我的问题是如何删除多余的登录屏幕,我认为这个问题的原因是 facebook SDK 小部件自动启动登录屏幕。

public void onClick(View view) {

   if(view.getId() == R.id.fb_login_button){
        ParseFacebookUtils.logInWithReadPermissionsInBackground(MainActivity.this, mPermissions, new LogInCallback() {
            @Override
            public void done(ParseUser user, ParseException e) {
                if (user == null) {
                    Log.d("Login", "Uh oh. The user cancelled the Facebook login.");
                    Toast.makeText(getApplicationContext(),"An Error occurred, Try Again!",Toast.LENGTH_LONG).show();
                } else if (user.isNew()) {
                    Log.d("Login", "User signed up and logged in through Facebook!");
                   getUserDetailsFromFB();
                } else {
                    Log.d("Login", "User logged in through Facebook!");
                   getUserDetailsFromParse();
                    showHomeActivity();
                }

            }
        });
    }
    }

Activity .xml

<com.facebook.login.widget.LoginButton
        android:id="@+id/fb_login_button"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="30dp"
        android:layout_marginRight="30dp"
        android:paddingTop="12dp"
        android:paddingBottom="12dp"
        android:onClick="onClick"
        />

最佳答案

试试这个:- 单击一次 view.setEnabled(false); 并在 done 中再次启用,如 view.setEnabled(true); 使用此代码..

public void onClick(View view) {

    view.setEnabled(false); //disable the button click

    if(view.getId() == R.id.fb_login_button){


        ParseFacebookUtils
       .logInWithReadPermissionsInBackground(MainActivity.this, mPermissions, new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException e) {

            view.setEnabled(true); // enable it again.. 
            if (user == null) {
                Log.d("Login", "Uh oh. The user cancelled the Facebook login.");
                Toast.makeText(getApplicationContext(),"An Error occurred, Try Again!",Toast.LENGTH_LONG).show();
            } else if (user.isNew()) {
                Log.d("Login", "User signed up and logged in through Facebook!");
               getUserDetailsFromFB();
            } else {
                Log.d("Login", "User logged in through Facebook!");
               getUserDetailsFromParse();
                showHomeActivity();
            }

        }
    });
}
}

发生这种情况是因为您点击了按钮两次..

So, after clicking disable the button and then again in done enable it again !

关于java - Android中的Facebook登录弹出两个登录界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49003037/

相关文章:

android - 如何将 ListView 列与标题匹配?

php - 邀请 Facebook 好友使用来自 Objective C 或 PHP 的应用程序

java - 在多个数组上获取相同的元素值

java - 如何在我的应用上使用 Admob Live 广告?

java - Java MVC 模式可以与委托(delegate)模式结合吗?

android - 如何获得Android中两点之间的距离?

Java EE 6 教程组件

android - 如何在 android 中使用 retrace.bat

android - 如何检查Android中的 bool 值?

asp.net-mvc - 用户访问网站时记录 MVC