如何创建从谷歌Android令牌解析_user帐户? [英] How to create a parse _User account from a Android Google token?

查看:531
本文介绍了如何创建从谷歌Android令牌解析_user帐户?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现有用的信息的一些片段。

I've found some fragments of useful information.

http://blog.parse.com/announcements/bring-your -own登陆/ 向我展示了如何登陆Android应用程序的一次的我有一个解析令牌。

http://blog.parse.com/announcements/bring-your-own-login/ shows me how to login an Android app once I have a Parse token.

我可以成功地获得谷歌令牌手机的谷歌帐户。

I can successfully obtain a Google token for a phone's Google account.

https://developers.google.com/android/guides/http-auth

/**
 * Gets an authentication token from Google and handles any
 * GoogleAuthException that may occur.
 */
protected String fetchToken() throws IOException {
    try {
        return GoogleAuthUtil.getToken(mActivity, mEmail, mScope);
    } catch (UserRecoverableAuthException userRecoverableException) {
        // GooglePlayServices.apk is either old, disabled, or not present
        // so we need to show the user some UI in the activity to recover.
        mActivity.handleGoogleException(userRecoverableException);
    } catch (GoogleAuthException fatalException) {
        // Some other type of unrecoverable exception has occurred.
        // Report and log the error as appropriate for your app.
    }
    return null;
}

怎样才能解析使用谷歌标记来创建一个解析令牌?

How can get Parse to use a Google token to create a Parse token?

我认为这将涉及编写一些云code,但我不清楚是什么,云code应该做的。我认为它需要创建或找到了谷歌令牌的新_user并返回解析令牌。

I assume that this will involve writing some Cloud Code, but I'm not clear on what that Cloud Code should do. I think it needs to create or find a new _User for the Google token and return the Parse token.

有没有如何处理谷歌Android登录/注册,或以外的任何其他功能NEW / Twitter的例子​​任何解析云code的例子吗?

Are there any Parse Cloud Code examples of how to handle Google Android login/signup, or examples of anything other than Faceboook/Twitter?

推荐答案

编辑:

我会闯入2箱子更容易遵循:新用户和返回用户

I will break into 2 cases for easier to follow: New User and Returning User.

该流程如下:

  1. 用户授权,并取得令牌
  2. 我们创建一个随机密码的新用户

您可以使用下面的 newChooseAccountIntent()方法返回的电子邮件里面的code一ParseUser。

You can create a ParseUser using following code inside the newChooseAccountIntent() method that return email.

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。返回用户

这是大多数人卡住了,因为我研究过互联网。流量如下:

2. Returning User

This is the where most of people stuck, as I researched over the Internet. The flow is as below:

  1. 用户授权和应用程序获得一个令牌
  2. 我们通过此标记云code来验证。我们需要检查是否该令牌是由谷歌签署,如果是针对我们(的 Android的开发者(2013))。
  3. 在可以验证令牌是有效的,可以查询使用 Parse.Cloud.useMasterKey()法云code用户并返回通过使用 getSessionToken()方法上的查询结果会话密钥。
  4. 使用会话密钥保存登录状态在磁盘上,通过调用 becomeInBackground 方法
  1. User authorizes and the app gets a token
  2. We pass this token to Cloud Code to validate. We need to check if this token is signed by Google and if it is meant for us (android-developers (2013)).
  3. After you can verify that the token is valid, you can query for the user in Cloud Code using Parse.Cloud.useMasterKey() method and return the session key by using getSessionToken() method on the query result.
  4. Use the session key to save login state on disk by calling becomeInBackground method

为了验证令牌,您可以发送 Parse.Cloud.htt prequest 到这个端点: https://www.googleapis.com/oauth2/v3/tokeninfo?access_token= 。这被指示在谷歌身份证件。您将收到如下数据:

To validate the token, you can send Parse.Cloud.httprequest to this endpoint: https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=. This is instructed in Google Identity Documentation. You will receive data as below:

{
 "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"
}

东西需要比较的澳元,AZP和电子邮件,它被翻译为观众,授权方和电子邮件。

Things need to compare are "aud", "azp" and "email" which are translated as audience, authorized party and email.

要查询云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
});

注意:请确保您有以下范围,使该电子邮件将显示在您检查云code: https://www.googleapis.com /auth/plus.profile.emails.read

Note: Make sure you have following scope so that the email will show up when you check on Cloud Code: https://www.googleapis.com/auth/plus.profile.emails.read

这篇关于如何创建从谷歌Android令牌解析_user帐户?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆