Ios 如何在GTMOAuth2ViewControllerTouch视图中预填充电子邮件字段
如何在GTMOAuth2ViewControllerTouch视图中预填充电子邮件字段 可能吗?有人试过这个吗 我正在使用标准方法创建视图控制器类并以模式显示gtm视图 self.gtmVC=[[GTMOAuth2ViewControllerTouch alloc]initWithAuthentication:googleAuth 授权URL:[GTMOAuth2SignIn googleAuthorizationURL] keychainItemName:kKeychainItemName 代表:赛尔夫Ios 如何在GTMOAuth2ViewControllerTouch视图中预填充电子邮件字段,ios,gtm-oauth2,Ios,Gtm Oauth2,如何在GTMOAuth2ViewControllerTouch视图中预填充电子邮件字段 可能吗?有人试过这个吗 我正在使用标准方法创建视图控制器类并以模式显示gtm视图 self.gtmVC=[[GTMOAuth2ViewControllerTouch alloc]initWithAuthentication:googleAuth 授权URL:[GTMOAuth2SignIn googleAuthorizationURL] keychainItemName:kKeychainItemName 代
finishedSelector:@选择器(viewController:finishedWithAuth:错误:) 没有支持的方法来执行此操作。然而,使用Javascript,您可以完成它。以下是一些步骤/代码: 等待Webview加载完成 GTMOAuth2ViewControllerTouch定义了一个NSNotification,您可以通过NSNotificationCenter观察该通知。这是kgtmoauth2webview已停止加载:
[[NSNotificationCenter defaultCenter]
addObserver:self
selector:@selector(authControllerWebViewStoppedLoading:)
name:kGTMOAuth2WebViewStoppedLoading
object:nil];
NSNotification对象的userInfo字典将在其中引用webview。GTMOAuth2ViewControllerTouch还允许公众访问webview。我在我的应用程序中使用了后者
使用Javascript更改电子邮件输入实体
首先,您应该知道,您可以获得webview显示的页面的HTML,如下所示:
NSString *html = [self.authController.webView
stringByEvaluatingJavaScriptFromString:
@"document.body.innerHTML"];
此解决方案不需要它,但它允许您确认电子邮件输入实体的HTML仍然如下所示:
<input id="Email" name="Email" type="email"
placeholder="Email" value="" spellcheck="false" class="">
就这样
显然,这个解决方案有可能让谷歌在没有事先与你核实的情况下改变事情。但是,在这种情况下,最糟糕的情况是电子邮件停止预填充,用户必须手动键入,至少在您发布更新之前是这样
希望这能有所帮助。我相信有一种比使用Javascript更简单的方法。创建控制器后,获取GTMOAuth2SignIn并使用用户电子邮件地址添加其他授权参数
#import "GTMOAuth2SignIn.h"
GTMOAuth2ViewControllerTouch *authViewController =
[[GTMOAuth2ViewControllerTouch alloc] initWithScope:kGTLAuthScopeDriveFile
clientID:kClientId
clientSecret:kClientSecret
keychainItemName:kKeychainItemName
delegate:self
finishedSelector:finishedSelector];
GTMOAuth2SignIn *signIn = authViewController.signIn;
signIn.additionalAuthorizationParameters = @{@"login_hint" : @"example@gmail.com"};
这来自已安装应用程序的OAuth2参数列表:
这至少对我来说是有效的。一点也不……我没有真正注意到复选标记。你有没有看到过这一空白页,上面写着“请复制此代码……”等等,在登录到谷歌后,它就消失了。是的,我看到了代码的短暂闪烁。请注意,如果有什么要做的。如果我建议的新方法适用于您,您可以考虑将此标记为已接受的答案,因此当其他人遇到此页时,他们将在顶部看到这种方法,这将节省JavaScript方法的麻烦。
#import "GTMOAuth2SignIn.h"
GTMOAuth2ViewControllerTouch *authViewController =
[[GTMOAuth2ViewControllerTouch alloc] initWithScope:kGTLAuthScopeDriveFile
clientID:kClientId
clientSecret:kClientSecret
keychainItemName:kKeychainItemName
delegate:self
finishedSelector:finishedSelector];
GTMOAuth2SignIn *signIn = authViewController.signIn;
signIn.additionalAuthorizationParameters = @{@"login_hint" : @"example@gmail.com"};