我遵循Google Identity Toolkit
文档中提供的示例Google Identity Toolkit - Quick-start App for iOS。到目前为止,我已完成以下操作:如何使用Google Identity Toolkit在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
- 是我BundleIDoauth2callback
- 我不知道它是从哪里来的。但是我的WidgetURL
是:https://myapp.appspot.com/oauth2callback
,所以我相信它是从中推导出来的。state
和code
似乎是每次随机生成的。
然而[GITClient handleOpenURL:url..
总是返回NO
这意味着它不能进行身份验证。到底是怎么回事?
我试着用类似的示例应用程序Google Plus - Quick-start sample app for iOS,使用Google Plus API
而不是Identity Toolkit API
。这里一切正常。
在工作示例的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配合使用?