gpt4 book ai didi

android - 如何在 Android 上的 Parse 后端链接 Google + 登录用户?

转载 作者:IT老高 更新时间:2023-10-28 23:00:48 24 4
gpt4 key购买 nike

我已经在我的 Android 应用程序中使用 Parse 3 个月了。现在我想在应用程序中添加电子邮件登录和社交登录(Facebook 和 Google+)。我已成功添加电子邮件和 fb 登录,用户可以同时连接电子邮件或 Facebook 或其中之一,应用程序将识别用户。

例如如果我通过电子邮件登录,然后连接 facebook,在另一台设备上使用该应用程序,通过 facebook 登录,该应用程序会知道它是同一个用户,并且会为我定制并显示我的数据。电子邮件也可以。

我已添加 Google+ sign-in for Android但我无法将用户的 Google+ 凭据与登录用户连接起来。

Parse Users 表有一个 authData 字段,该字段获取 facebook 身份验证数据并会获取 Twitter,并且这两个登录都包含在 Parse SDK 中。

对 Google+ 最好的做法应该是什么?我对数据库设计以及如何连接使用 Google+ 登录的用户感到困惑?

如果用户只是通过 Google+ 登录会怎样?如何创建 Parse 用户并在 Parse 上验证用户身份?

我对云代码和 Android 感到满意,并且非常感谢能够将我推向正确方向的某种帮助/说明。我从未使用过 OAuth2,并且使用 Parse 登录电子邮件和社交登录,我认为我不应该参与其中。但是,如果我错了,请告诉我。

谢谢!

更新:我已经阅读了很多关于 Parse Questions 的问题,并且已经多次检查了 become 方法(因为我在阅读之后一直认为我错过了一些东西)。 Check this question - I'm currently in the same situation .

我有:
1. 实现 Google+ 登录。
2.使用GoogltAuthUtil获取访问 token 。

坚持:
3. 用户使用Google+登录后如何关联当前登录的Parse用户?
4. 如果 Google+ 是用户的第一个(也是唯一一个)登录选择,如何创建新的 Parse 用户?

最佳答案

这似乎与 How to create a parse _User account from a Android Google token?

以下是我在该帖子中的回答:


1。新用户

流程如下:

  1. 用户授权并获得 token
  2. 我们使用随 secret 码创建一个新用户

您可以在返回电子邮件的 newChooseAccountIntent() 方法中使用以下代码创建 ParseUser。

ParseUser user = new ParseUser();
user.setUsername(mEmail);
user.setPassword(randomPassword);
user.setEmail(mEmail);
user.signUpInBackground(new SignUpCallback() {
public void done(ParseException e) {
if (e == null) {
// Hooray! Let them use the app now.
} else {
// Sign up didn't succeed. Look at the ParseException
// to figure out what went wrong
}
}
});

2。回头客

这是我在互联网上研究过的大多数人所困的地方。流程如下:

  1. 用户授权,应用获得 token
  2. 我们将此 token 传递给 Cloud Code 进行验证。我们需要检查此 token 是否由 Google 签名,以及它是否适用于我们 (android-developers (2013))。
  3. 验证token有效后,可以在Cloud Code中使用Parse.Cloud.useMasterKey()方法查询用户,使用getSessionToken( ) 查询结果的方法。
  4. 通过调用becomeInBackground方法使用 session key 将登录状态保存在磁盘上

要验证 token ,您可以将 Parse.Cloud.httprequest 发送到此端点:https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=。这在 Google Identity Documentation 中有说明.您将收到如下数据:

{
"iss": "https://accounts.google.com",
"sub": "110169484474386276334",
"azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"email": "billd1600@gmail.com",
"at_hash": "X_B3Z3Fi4udZ2mf75RWo3w",
"email_verified": "true",
"aud": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
"iat": "1433978353",
"exp": "1433981953"
}

需要比较的是“aud”、“azp”和“email”,分别翻译为受众、授权方和电子邮件。

在 Cloud Code 上查询当前用户:

var query = new Parse.Query(Parse.User);
query.equalTo("email",mEmail);
query.first({
success: function(user) {
// Use user..getSessionToken() to get a session token
},
error: function(user, error) {
//
},
useMasterKey: true
});

注意:确保您具有以下范围,以便在您检查 Cloud Code 时显示电子邮件:https://www.googleapis.com/auth/plus.profile .emails.read

关于android - 如何在 Android 上的 Parse 后端链接 Google + 登录用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28114422/

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