gpt4 book ai didi

java - Facebook 登录无法正常工作(解析)

转载 作者:太空宇宙 更新时间:2023-11-03 10:19:57 25 4
gpt4 key购买 nike

在我的应用程序中,我有一个处理 Facebook 登录和注册的 Activity 。当我单击“使用 Facebook 登录”按钮时,我执行了这段代码,如 Parse docs 中所写:

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

这应该可以处理新用户和现有用户。

我的activity中也有这个方法:

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

在我的 Application 类中,我正确设置了 Parse 和 ParseFacebookUtils:

Parse.initialize(this, getString(R.string.parse_app_id), getString(R.string.parse_client_key));
ParseFacebookUtils.initialize(getString(R.string.facebook_app_id));

我的设备上还安装了 Facebook 应用程序。

我遇到的问题是,当我调用 ParseFacebookUtils.logIn() 时,它总是返回一个不是新的或 null 的 ParseUser,但它实际上是空的。它没有 objectIdcreatedAtupdatedAt 等。ParseException 也始终为 null。

我也不确定为什么 done 回调中的 ParseUseruser.isNew() 有一个假值,因为没有我的 _User 表中的任何用户。通常,Facebook 登录应该创建一个新的 ParseUser(如果尚不存在)。

我已尝试卸载并重新安装我的应用程序,但没有成功。即使我清除每个表,在数据浏览器中,清除我的缓存,并重新安装我的应用程序,它也永远不会显示用户是新用户。

我找到了一个 similar post on the Parse help forum , 但没有答案。

在我的 AndroidManifest 中,我有这个:

<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/facebook_app_id" />

<activity
android:name=".activities.SignUpOrLogInActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" />

SignUpOrLogInActivity 是我的“使用 Facebook 登录”按钮的位置。

在我的日志中,我有时会看到这个警告:

Warning: Sessionless Request needs token but missing either application ID or client token.

然后我尝试像这样记录 Facebook 应用程序 ID 和访问 token :

ParseFacebookUtils.getSession().getApplicationId()

ParseFacebookUtils.getSession().getAccessToken()

Facebook 应用程序 ID 是正确的, session token 打印了一些看起来正确的字符串。

我有 Parse 版本:1.5.1 和 Facebook SDK 版本 3.14.1

编辑:

我查看了我的 Cloud Code 日志,发现了这个错误:

I2014-08-17T18:12:35.381Z] v314: before_save triggered for _User
Input: {"original":null,"update":{"username":"n7Tr5fvBGumtCv2MxwY8V3PHF","authData":{"facebook":{"id":"[my_fb_id]","access_token":"CAAEK5cQebpEBAHz2vgqtJ3ADuoAIWJb6pos1ykobZCi4PjwsZAVLuN14EiOTJJLdhR97iiwSefSU5nvlVSq5ZBCiopyTycpsQDw5jM7rnBZBUrWvrbPcTIAmp8JomPAXmTrUok93BDhdireVrtxED86ziaxm29nUCuhb2PHMQZAWGNTDyKkxdeUthsFzC7F4WmmKCQUJpZAwYlebHWOfI9y02B0O8DNSZARTLjfpmZCvXQZDZD","expiration_date":"2014-10-16T16:11:57.000Z"}}}}
Result: Invalid email.

最佳答案

问题是我有一个像这样的 Parse User 类的 before save 函数:

Parse.Cloud.beforeSave(Parse.User, function(request, response) {
var user = request.object;
if (!/^([a-z0-9_\.-]+)@([\da-z\.-]+)\.([a-z\.]{2,6})$/.test(user.get("email"))) {
response.error("Invalid email.");
} else if (!user.get("email")) {
response.error("Every user must have an email address.");
} else {
response.success();
}
});

我摆脱了这个以解决问题。

关于java - Facebook 登录无法正常工作(解析),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25334873/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com