Facebook提示用户登录两次

3
我有一个集成了 Facebook 登录和 parse.com 的 Android 应用。不幸的是,当用户使用 Facebook 登录时,授权网页会被启动两次。
我已经进行了大量搜索以找到一个适当的解决方案,但没有找到。我也调整了 Facebook 端的几乎所有应用设置。
这里是我从 LoginActivity 调用登录的地方。我不知道其他登录正在哪里启动。
private void onLoginButtonClicked() {
    NativeLoginActivity.this.progressDialog = ProgressDialog.show(NativeLoginActivity.this, "", "Logging in...", true);
    List<String> permissions = Arrays.asList("public_profile", "user_friends", "user_about_me", "user_relationships", "user_birthday",
            "user_location");
    ParseFacebookUtils.logIn(permissions, this, new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException err) {
            //NativeLoginActivity.this.progressDialog.dismiss();
            if (user == null) {
                Log.d(TAG, "Uh oh. The user cancelled the Facebook login.");
            } else if (user.isNew()) {
                showUserDetailsActivity();
            } else {
                Log.d(TAG, "User logged in through Facebook!");
                showUserDetailsActivity();
            }
        }
    });
}

这里是XML中的登录按钮:
<com.facebook.widget.LoginButton
    android:id="@+id/fbLoginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:gravity="center_horizontal" 
    android:layout_marginBottom="10dp"/>

以下是我的清单文件中的设置:

这里是我的清单文件中的设置:

<activity
     android:name="com.facebook.LoginActivity"
     android:label="@string/app_name"
     android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<meta-data
     android:name="com.facebook.sdk.ApplicationId"
     android:value="@string/app_id" />

Facebook设置: 类名是我的 MainActivity, 单点登录已启用,应用状态为公共。

我不明白额外的登录调用来自哪里。任何帮助都将被赞赏,以便让我朝着解决方案前进。我对Android相对较新。


尝试从第一次Facebook登录的Webview中获取响应,如果该响应为true,则可以直接转到下一个活动。 - VVB
1个回答

5

已解决

在XML中使用标准按钮(如Parse文档中提供的)和使用Facebook小部件按钮(如Facebook文档中提供的)之间存在差异。

Facebook小部件具有一些内置功能,可以启动登录(不确定如何实现)。

标准按钮需要您附加侦听器,并调用Parse Facebook登录函数。

由于我除了小部件外还有侦听器和Parse调用,因此登录会被调用两次。

将此更改为:< com.facebook.widget.LoginButton.../>

变成这个:

<Button
    android:id="@+id/fbLoginButton"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="10dp"
    android:gravity="center_horizontal"
    android:background="@drawable/button_login"
    android:text="@string/login"
    android:textColor="#fff" />

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