【发布时间】:2014-08-30 15:37:21
【问题描述】:
我遵循了Google Identity Toolkit 文档Google Identity Toolkit - Quick-start App for iOS 中提供的示例。到目前为止,我已经完成了以下工作:
- 用户可以按“使用 Google 登录”并重定向到
Google consent screen。 - 输入正确的 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,所以我相信它是由它派生而来的。 -
state和code似乎每次都是随机生成的。
然而 [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