我遵循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配合使用?