当前位置: 首页 > 知识库问答 >
问题:

在android studio中通过Facebook api 4.0解析登录

舒赞
2023-03-14

我的密码是。

 private void facebook() {

 List<String> permissions = Arrays.asList("public_profile", "email");

    ParseFacebookUtils.logInWithReadPermissionsInBackground(this, permissions, new LogInCallback() {

        @Override
        public void done(ParseUser user, ParseException err) {
            progressDialog.dismiss();
            Log.e("Facebook", user + "    " + err.getMessage());

            if (user == null) {
                Log.e("MyApp", "Uh oh. The user cancelled the Facebook login.");
            } else if (user.isNew()) {              

                Log.e("MyApp", "User signed up and logged in through Facebook!");
            } else {
                userinfo(user);
                Log.e("MyApp", "User logged in through Facebook!");
            }
        }
    });

}

此代码总是提供用户为空。.我有使用最新的Facebook SDK

编译'com.facebook.android:facebook android sdk:4.0.1'

Parse是:Parse-1.9.1.jar

我还使用了Android Studio。单击按钮时调用此方法此方法为“工作”,表示facebook弹出窗口已打开,但它始终提供用户为空。此给定的is用户为空,但刷新后parseuser不为空。

共有3个答案

雷逸仙
2023-03-14

不确定,但检查您的应用程序https://developers.facebook.com的关键哈希设置。您需要在应用开发人员控制台中设置发布和调试版本的密钥哈希。可能是您刚刚为调试环境设置了密钥哈希。有关详细信息,请参阅设置发布密钥散列。希望有帮助。

  ParseFacebookUtils.logInWithReadPermissionsInBackground(this, Arrays.asList("email", "user_photos", "public_profile", "user_friends")
            , new LogInCallback() {
        @Override
        public void done(ParseUser user, ParseException err) {
            if (user == null) {
                Toast.makeText(Form.this,"User Already logged up through Twitter!",Toast.LENGTH_LONG).show();
            } else if (user.isNew()) {


            } else {

                Toast.makeText(Form.this,"User Already logged up through Facebook!",Toast.LENGTH_LONG).show();


            }
        }

    });

添加这个也...

  protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ParseFacebookUtils.onActivityResult(requestCode, resultCode, data);
 }    

这个代码工作得很好。。

柳翼
2023-03-14

不要忘记在应用程序类中初始化ParseFacebookUtils类,正如文档中所示:

ParseFacebookUtils.initialize(this);

还将onActivityResult传递给ParseFacebookUtils。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    ParseFacebookUtils.onActivityResult(requestCode, resultCode, data);
}

希望有帮助;)。

来源:https://parse.com/docs/android/api/com/parse/ParseFacebookUtils.html

南宫阳焱
2023-03-14

根据解析文档和我在web上找到的一些技巧,我按照这些步骤注册/登录/链接用户与ParseUsers。请检查您是否遗漏了任何步骤,因为我与您有相同的问题,我必须重新执行所有步骤:

  • 首先,我访问了这个网站并创建了一个新的应用程序。
  • 我下载了Facebook SDK,完成了步骤4和步骤5,并添加了包名和默认类名
  • 我添加了密钥哈希:

发展重点:

cd C:\Program Files\Java\jdk1.8.0\u 05\bin keytool-exportcert-alias androiddebugkey-keystore C:\Users\YOUR NAME.android\debug.keystore | C:\OpenSSL\bin\OpenSSL sha1-binary | C:\OpenSSL\bin\OpenSSL base64

释放键:

cd C:\Program Files\Java\jdk1.8.0\u 05\bin keytool-exportcert-alias“您作为别名提供的名称”-keystore | C:\OpenSSL\bin\OpenSSL sha1-binary | C:\OpenSSL\bin\OpenSSL base64

  • 在parse.com的内部设置和身份验证中,我在Facebook应用程序中添加了在Facebook中创建的应用程序ID。
  • 根据这一点,我完成了所有步骤,直到使用登录或共享(包括此)。
  • 我在这里添加了我的开发哈希键。
  • 在我在Facebook上创建的应用程序的设置中,我检查了Key Hash字段中的开发和发布密钥。
  • 我使用正确答案中的教程使我的应用程序生效。
  • 我从QuickStart下载了最新的Parse SDK(1.9.1),因为1.8版不起作用。
  • 我在项目的libs文件夹中添加了SDK的新.jar文件和ParseFacebookUtilsV4-1.9.1,并同步了build.gradle文件。
  • 我在strings.xml中添加了这一行:

我在我的AndroidManifest.xml内部应用程序标记中添加了这个:

<activity android:name="com.facebook.FacebookActivity"
    android:configChanges=
        "keyboard|keyboardHidden|screenLayout|screenSize|orientation"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:label="@string/app_name" />

还有这个:

<meta-data android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id"/>

在应用程序的build.gradle中,我在android中添加了这些,因为Diamond出现了一些错误(很抱歉,我记不起确切的错误):

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_7
    targetCompatibility JavaVersion.VERSION_1_7
}

由于一些未定义变量的错误,我将SDK版本更改为数字:

minSdkVersion 14
targetSdkVersion 19

同一文件中的相关依赖项

compile fileTree(include: 'Parse-*.jar', dir: 'libs')
compile fileTree(include: 'ParseFacebookUtilsV4-*.jar', dir: 'libs')
compile 'com.facebook.android:facebook-android-sdk:4.0.0'

>

   Parse.initialize(this, "hoMaK", "wWV193mE");

    FacebookSdk.sdkInitialize(getApplicationContext());

    ParseFacebookUtils.initialize(getApplicationContext());

    final List<String> permissions = Arrays.asList("public_profile", "email");

    fb.setOnClickListener(new View.OnClickListener()
    {
        public void onClick(View view)
        {
            proDialog.show();

            ParseFacebookUtils.logInWithReadPermissionsInBackground(HomeActivity.this, permissions, new LogInCallback() {
                @Override
                public void done(final ParseUser user, ParseException err) {
                    if (user == null) {
                        Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");

                        Toast.makeText(getApplicationContext(), "Log-out from Facebook and try again please!", Toast.LENGTH_SHORT).show();

                        ParseUser.logOut();

                        proDialog.hide();
                    }
                    else if (user.isNew()) {
                        Log.d("MyApp", "User signed up and logged in through Facebook!");

                        if (!ParseFacebookUtils.isLinked(user)) {
                            ParseFacebookUtils.linkWithReadPermissionsInBackground(user, HomeActivity.this, permissions, new SaveCallback() {
                                @Override
                                public void done(ParseException ex) {
                                    if (ParseFacebookUtils.isLinked(user)) {
                                        Log.d("MyApp", "Woohoo, user logged in with Facebook!");

                                        proDialog.hide();
                                    }
                                }
                            });
                        }
                        else{
                            Toast.makeText(getApplicationContext(), "You can change your personal data in Settings tab!", Toast.LENGTH_SHORT).show();
                        }
                    } else {
                        Log.d("MyApp", "User logged in through Facebook!");

                        if (!ParseFacebookUtils.isLinked(user)) {
                            ParseFacebookUtils.linkWithReadPermissionsInBackground(user, HomeActivity.this, permissions, new SaveCallback() {
                                @Override
                                public void done(ParseException ex) {
                                    if (ParseFacebookUtils.isLinked(user)) {
                                        Log.d("MyApp", "Woohoo, user logged in with Facebook!");

                                        proDialog.hide();
                                    }
                                }
                            });
                        }
                        else{
                            proDialog.hide();
                        }
                    }
                }
            });
        }
    });

通过以上所有步骤,我可以使用我的Facebook帐户注册或登录,我在Parse.com中的\u User对象中获得了一个新行,我可以随时更改数据(我作为一个普通注册用户处理)

 类似资料:
  • 我正在使用android Studio 0.8.2并希望将数据从文件读取到数组,但我得到了这个错误:无法解析符号FileUtils。错误在这一行: 我已经包括了commons-io-2.4。应用程序中的jar文件- 如果你需要更多信息,请告诉我。

  • 驴你看,我要添加截取到我的应用程序添加这行代码com.mcxioke。截取:库aar:1.0.0建立。gradle文件 我也试着添加改装。但它给出了相同类型的错误:未能解决:bla bla bla。 所以我认为在我的情况下gradle不能同步任何其他库不同于com.android....... 我也尝试将这行代码添加到我的build.gradle。但是什么都没有改变 请指教 编辑:添加注释后生成。

  • 我遵循了parse的教程,并根据他们的指导方针配置了我的FB开发人员帐户以及所需的包名和哈希键。在权限,我已经要求用户配置文件和电子邮件id,所以我应该得到他们的脸书id,全名,性别和电子邮件id作为脸书dcumentation。 我正在返回这个JSON。性别和电子邮件id不是以null值作为键的事件。当然,我已经覆盖了我的FB id。{“名称”:“Varun Agarwal”,“ID”:“111

  • 问题内容: 我正在尝试使用Groovy和Java的ScriptEngine API解析XML。下面的代码正是这样做的,但是我想知道是否有更好的方法可以做到这一点。还有与此相关的性能影响吗? 输出: 问题答案: 您的Groovy脚本可能是 “ groovy-er” … 这做同样的事情: 确实,您可以使用而不是JVM脚本引擎,这可以使您了解:

  • 问题内容: 在.Net中,我发现了一个很棒的库HtmlAgilityPack,它使您可以使用XPath轻松解析格式不正确的HTML。我已经在.Net站点中使用了几年,但是我不得不为我的Python,Ruby和其他项目选择更痛苦的库。有人知道其他语言的类似库吗? 问题答案: 在python中,ElementTidy解析标记汤并生成一个元素树,该树允许使用XPath进行查询:

  • 问题内容: 我在JMeter中使用正则表达式遇到了一些麻烦。我有这种形式的HTML 我需要获取JMeter 中and 的值作为变量。 问题答案: 请改用XPath Extractor 。 如果 必须 使用正则表达式,只需搜索正则表达式标签解析即可。