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

在将Facebook注册/登录与解析集成时,无法解析logInWithReadPermissionsInBackground方法

宣熙云
2023-03-14

我使用解析后端。我试图将我的应用程序与Facebook集成。我下面的教程parse.com.然而,当我尝试设置登录使用Facebook,我开始有问题。在教程中,给出了这段小代码

ParseFacebookUtils.logInWithReadPermissionsInBackground(this, permissions, new LogInCallback() {
 @Override
 public void done(ParseUser user, ParseException err) {
 if (user == null) {
   Log.d("MyApp", "Uh oh. The user cancelled the Facebook login.");
 } else if (user.isNew()) {
   Log.d("MyApp", "User signed up and logged in through Facebook!");
 } else {
   Log.d("MyApp", "User logged in through Facebook!");
 }
 }
});

然而,当我在应用程序中复制这段代码时,我得到一个错误,上面写着“无法解析符号‘logInWithReadPermissionsInBackground’”。当我在Android studio中打开ParseFacebookUtils类时,它没有任何名为“logInWithReadPermissionsInBackground”的方法,但在网站上ParseFacebookUtils类有它。为什么我得不到这个方法?我使用的是ParseFacebookUtilsV4-1.9.1.jar,这是最新的版本。请帮帮我。

共有3个答案

司马自明
2023-03-14

“无法解析符号”通常发生在应用程序的gradle文件中缺少依赖项的情况下。

随着ParseFacebookUtils.jar成为一个单独的jar文件,您需要直接为它添加依赖项,而不是像以前那样只为Parse.jar添加依赖项。

以下是我补充的内容。

compile fileTree(dir: 'libs', include:'ParseFacebookUtilsV4-*.jar')

希望这能解决你的问题。干杯

魏翰
2023-03-14

我遇到了相同的问题,但我的问题是为logInWithReadPermissionsInBackground的第一个参数提供了无效的上下文。因为我是从OnClickListener类内部调用它,所以第一个参数应该是MyActivity.this,而不是this。你可能有同样的情况。

button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final List<String> permissions = null;
            ParseFacebookUtils.logInWithReadPermissionsInBackground(SignInActivity.this, permissions, new LogInCallback() { ... }
杜俊楚
2023-03-14

这些是我遵循的步骤,根据解析留档和我在网上找到的一些提示,完成用户与解析用户的注册/登录/链接。请检查你没有错过任何一步,因为我和你有同样的问题,并且把所有的步骤都重新做了一遍:

  • 首先,我访问了这个网站并创建了一个新的应用程序。
  • 我下载了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对象中获得了一个新行,我可以随时更改数据(我作为一个普通注册用户处理)

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

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

  • 注册厂商账号 打开浏览器访问注册页面 填写正确的邮箱地址后,点击"获取验证码"按钮,系统将自动发送带有注册验证码的邮件.填写验证码和后续的必要信息后,点击注册按钮,完成注册流程. 登录账号 注册成功后,浏览器将自动跳转到登录页面 填写公司名\密码和验证后.登录

  • 本文向大家介绍Java简易登录注册功能实现代码解析,包括了Java简易登录注册功能实现代码解析的使用技巧和注意事项,需要的朋友参考一下 哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。 哈希算法最重要的特点就是: 相同的输入一定得到相同的输出; 不同的输入大概率得到不同的输出。 哈希算法的目的就是为了验证原始数据是否被篡改。 我

  • 我正在通过Android Studio中的一个应用程序工作,该应用程序使用学校意图传递数据。我已经创建了传递数据的对象,并启动了,但是我不断收到一个警告,说我的方法无法解析。有什么想法吗?提前谢了。

  • 正如文件所述: Android O允许您通过在res/字体/文件夹中添加字体文件来捆绑字体作为资源。 结果: 您可以使用getFont(int)方法检索字体,其中需要传递要检索的字体的资源标识符。此方法返回Typeface对象。这将对字体的第一个重量或样式变体(如果是字体系列)进行编码。然后可以使用字体。create(typeface,style)方法来检索特定样式。 注意:TextView已经为