【问题标题】:How to authenticate users in iOS app using Google Identity Toolkit?如何使用 Google Identity Toolkit 对 iOS 应用中的用户进行身份验证?
【发布时间】:2014-08-30 15:37:21
【问题描述】:

我遵循了Google Identity Toolkit 文档Google Identity Toolkit - Quick-start App for iOS 中提供的示例。到目前为止,我已经完成了以下工作:

  1. 用户可以按“使用 Google 登录”并重定向到 Google consent screen
  2. 输入正确的 Google 帐户用户名和密码后,将调用 openUrl: 方法。

下面的代码说明了openURL:方法的实现:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

  // Handle custom scheme redirect here.
  return [GITClient handleOpenURL:url
                sourceApplication:sourceApplication
                       annotation:annotation];
}

我看到url 变量包含以下信息:

com.example.myapp:/oauth2callback?state=67688930&code=4/0JGe2u_FjoGrt_W67iJY2zCWRNgd.Yo023UKVHI4fBvB8fYmgkJyhcwpNkAI
  • com.example.myapp - 是我的 BundleID
  • oauth2callback - 我不知道它到底是从哪里来的。但是我的WidgetURL 是:https://myapp.appspot.com/oauth2callback,所以我相信它是由它派生而来的。
  • statecode似乎每次都是随机生成的。

然而 [GITClient handleOpenURL:url.. 总是返回 NO 这意味着它无法进行身份验证。怎么回事?

我尝试过使用Google Plus API 而不是Identity Toolkit API 的类似示例应用程序Google Plus - Quick-start sample app for iOS。这里一切正常。

工作示例中openURL: 方法的实现如下所示:

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {

  BOOL canHandleUrl = [GPPURLHandler handleURL:url
                             sourceApplication:sourceApplication
                                    annotation:annotation];
  return canHandleUrl;
}

这里的url 变量包含以下信息:

com.example.myapp:/oauth2callback?state=39225007&code=4/-zN9DyI5QX8Jfcc8ft4SGMNul2AH.MuDLv7lFMdIbPvB8fYmgkJxJ1flMkAI&authuser=0&num_sessions=1&prompt=consent&session_state=41a2c7b449624476165c31cd33e63bac561556a3..ca9c

我注意到存在一些附加信息。但是,如果这有任何重要性,或者仅仅是因为使用了另一个 API,我不知道。

总结一下我的问题:如何配置 Google Identity Toolkit 以与 iOS 配合使用?

【问题讨论】:

    标签: ios google-app-engine oauth-2.0 google-plus google-oauth


    【解决方案1】:

    iOS 客户端存在一些错误。

    iOS 客户端中的错误现已修复,因此如果您遇到同样的问题,请尝试更新。或者阅读我与 Google here 的讨论,以更好地了解 Gitkit。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-06
      • 2015-08-30
      • 1970-01-01
      • 2016-01-09
      • 2020-07-09
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      相关资源
      最近更新 更多