如何从 Android Google 令牌创建解析 _User 帐户?

2023-11-24

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

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

我可以成功获取手机 Google 帐户的 Google 令牌。

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;
}

如何让 Parse 使用 Google 令牌来创建 Parse 令牌?

我认为这将涉及编写一些云代码,但我不清楚该云代码应该做什么。我认为它需要为 Google 令牌创建或找到一个新的 _User 并返回 Parse 令牌。

是否有任何关于如何处理 Google Android 登录/注册的 Parse Cloud 代码示例,或者除了 Facebook/Twitter 之外的其他示例?


注意:此答案不适用于开源解析服务器,因为它仅使用可撤销会话。查看解析服务器/问题/1392进一步更新

更新(2016 年 1 月):

你需要关闭可撤销的会话为了打电话getSessionToken on Parse.User. Go to 应用程序设置>>Users>> 关闭需要可撤销的会话。这在 2016 年并不是什么新鲜事,但在给出答案时,作者并不知道这一变化。


为了便于理解,我将分为两种情况:新用户和老用户。

1. 新用户

流程如下:

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

您可以使用以下代码创建一个 ParseUsernewChooseAccountIntent()返回电子邮件的方法。

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. 用户授权,应用程序获得令牌
  2. 我们将此令牌传递给 Cloud Code 进行验证。我们需要检查此令牌是否由 Google 签名以及它是否适合我们(android-开发者(2013))。
  3. 验证令牌有效后,您可以使用以下命令在 Cloud Code 中查询用户Parse.Cloud.useMasterKey()方法并使用返回会话密钥getSessionToken()方法对查询结果进行处理。
  4. 使用会话密钥通过调用将登录状态保存在磁盘上becomeInBackground method

验证令牌, 你可以发送Parse.Cloud.httprequest到这个端点:https://www.googleapis.com/oauth2/v3/tokeninfo?access_token=。这是在中指示的谷歌身份文档。您将收到如下数据:

{
 "iss": "https://accounts.google.com",
 "sub": "110169484474386276334",
 "azp": "1008719970978-hb24n2dstb40o45d4feuo2ukqmcc6381.apps.googleusercontent.com",
 "email": "[email protected]",
 "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
});

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Android Google 令牌创建解析 _User 帐户? 的相关文章

随机推荐

  • Swift 运算符和 nil [重复]

    这个问题在这里已经有答案了 这种行为的解释是什么 let x Int nil if x lt 10 print x lt 10 它打印 x EDIT 我向 Apple 提交了一份错误报告 他们承认该报告是另一份报告的现有副本 所以苹果会以某
  • 为什么 Deedle 中的 Frame.X 静态方法在 VS 2017 中生成警告?

    我昨天下载了新的 VS 2017 它工作正常 除了我在调用静态方法的每一行都收到此警告Frame ReadCsv来自Deedle包裹 FS10001 This method is not intended for use from F 调用
  • 如何以编程方式实时更新 Google 文档(通过 Chrome 扩展或外部 JS)

    我想通过 Google Chrome 扩展程序或简单的 JavaScript 以编程方式在外部编辑我的 Google 文档 并在 Google 文档中实时 实时 查看更改 当这个问题出现时 我正在寻找可以编辑 Google 文档并以编程方式
  • 按行填充多维数组

    在提出问题之前 我会指出有人问过类似的问题here但该线程并没有真正回答我的问题 考虑以下维数组 1D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 2D 1 2 3 4 5 6 7 8 9 10 11 12
  • ZF2 何时使用 getServiceLocator() 何时不使用

    我真的很困惑何时使用 getServiceLocator 何时不使用 举个例子 Module Helloworld src Controller IndexController php IndexControllerFactory php
  • 将文件保存到 Google 云端硬盘时可以触发 Google 脚本吗?

    我有一个 VBA 脚本 可以将 Excel 文件转换为 PDF 然后通过 Google Drive 桌面同步将其保存到 Google Drive 文件夹中 我想做的是让 Google 脚本触发器监视给定的文件夹 每次将文件保存到那里时 它都
  • mysql 分析器“发送数据”

    有没有对这些状态的解释 http dev mysql com tech resources articles using new query profiler html 我的具体问题是关于这个查询的 select count from 13
  • Java:更改 UI 字体 (Nimbus) 不起作用!

    我指的是这个 Nimbus 参考 我尝试将全局字体设置得稍大一些 UIManager put defaultFont new Font Font SANS SERIF 0 16 仅适用于菜单 但是nothing其他 按钮 标签 我尝试更改标
  • 为什么App更新后不兼容平板电脑

    我有一个应用程序 它已经推出了 2 年多了 并且自平板电脑问世以来就受到平板电脑的支持 我有一台 Asus Transformer 平板电脑 用于平板电脑测试 在我进行更新之前 该应用程序与平板电脑设备兼容 对于我最近的一组更改 我在 An
  • 如何使用 ngStyle (angular2) 添加背景图像?

    如何使用 ngStyle 添加背景图像 我的代码不起作用 this photo http dl27 fotosklad org ua 20121020 6d0d7b1596285466e8bb06114a88c903 jpg div div
  • Win32 相当于 .net SendKeys

    我正在设计一个从 Kinect 读取手势并执行一些操作的系统 我正在尝试包含能够将 HotKey 发送到应用程序的系统 我的系统是用 C 编写的 但 UI 是用 C net 编写的 我已经能够从 UI 部分使用 SendKeys 并且它确实
  • 如何在没有用户交互的情况下初始化全屏

    您好 我是初学者 我想创建一个网络应用程序 并且在页面加载时需要全屏帮助 无需用户交互 我在点击功能上有类似的东西可以正常工作 但我想在起始页加载功能 addEventListener click function var el docum
  • 将源代码隐藏在 .jar 文件中

    人们可以轻松提取 jar文件并查看源代码 我想保护源代码不被看到 一种可能的答案是使用密码保护文件 就像我们对 zip 文件所做的那样 但是 如果知道密码 则可以轻松查看源代码 有没有什么方法可以隐藏源代码并仍然能够运行 类似于什么 exe
  • python:使用 PyCharm 和 PyQt5 时进程已完成,退出代码 1

    我有三个 Python 3 4 3 脚本 其中之一是用于控制 PyQt5 生成的 ui 文件 当我运行 GUI 程序时 它接受所有数据和所有内容 当我按 InputDialog 上的 确定 按钮时 窗口将关闭并显示控制台 Process f
  • JavaScript 字符串赋值运算符

    我怎么可以用 在字符串上 但我不能使用 on it 例如 var test Test var arr 8660 test arr alert test Shows Test 8660 test arr alert test Shows Na
  • .net core 1.1:外部程序集的 Type.GetType 返回 null

    我正在将控制台应用程序移植到 NET core 该应用程序从外部库加载类型 在完整的 NET Framework 中使用Type GetType typename assemblyname 当程序集位于与可执行文件相同的文件夹中时有效 在
  • 在 Flutter 中迭代列表来渲染多个小部件?

    我有一个如下定义的字符串列表 var list one two three four 我想使用文本小部件在屏幕上并排呈现值 我尝试使用以下代码来尝试此操作 for var name in list return new Text name
  • 如何在 UIPickerView 标签旁边获得复选标记?

    The UIPickerView that appears in Safari has a check mark beside the current choice Is there a built in way to get this o
  • 如何在Android中的Webview中打开Excel、.doc文件?

    如何在 Android webview 中打开 Excel 和 doc 文件 谷歌文档可以支持吗 是的 Google doc 支持您显示 doc 或 excel pdf 文本或其他格式 WebView urlWebView WebView
  • 如何从 Android Google 令牌创建解析 _User 帐户?

    我发现了一些有用的信息片段 http blog parse com announcements bring your own login 向我展示如何登录 Android 应用程序once我有一个解析令牌 我可以成功获取手机 Google