我在iOS 8上实现了Google登录,一切都正常。但是当我在iOS 9上调用这一行时:
GIDSignIn.sharedInstance().signIn()我能第一次登录。但是,如果我取消了,下次我尝试登录时,它会显示一个普通用户审批web视图的白色屏幕。
这种情况甚至发生在我删除应用程序并重新安装它时,这意味着某些东西可能在OS级别上被缓存。。
唯一的解决方案是重新打开iOS模拟器或重新启动iPhone。
我试过all these answers却没有运气。我也尝试过GIDSignIn.sharedInstance().signIn().allowsSignInWithWebView = true,希望通过Safari授权可能有效,但是Safari从未打开。我的Podfile有pod 'Google/SignIn',所以我不认为这是一个版本问题。
我对此感到困惑,因为这超出了我的应用程序的范围,我所能想到的就是解构一个工作示例应用程序,并逐行比较它的设置。
有人有链接到一个工作的示例应用程序吗?
发布于 2017-02-07 21:37:06
所以,我和你有同样的问题。我花了好几个小时来尝试每件事。我终于找到了一个解决方案,这可能不是100%正确的,但它对我有效,并解决了问题。
这就是我在我的项目中所做的。首先,我自己实现了三个GIDSignInUIDelegate函数,这与正式文档是冲突的,因为我的GIDSignInUIDelegate是UIViewController的子类。但是我正在使用我的自定义签名按钮,当我遵循google的官方文档时,它不起作用。所以我尝试了所有的方法,发现一切都奏效了。
在您实现委托函数之后,需要做两件主要的事情。
相反,在按钮操作中设置它们。否则,它会继续显示委托。
希望它能帮助你解决问题。
发布于 2016-04-30 16:29:01
我也面临着同样的问题。事实上,在一个视图控制器中,它是为我工作的,而另一个视图控制器是不工作的。
如果我在某个Button方法中调用[[GIDSignIn sharedInstance] signIn]而不是in,它对我很有用。但是如果我在viewDidLoad里面调用它,我就会得到白色的屏幕。
我找到了另一个解决办法,但我不同意,因为我认为这不可靠。
[self performSelector:@selector(LogActionPresed:) withObject:self afterDelay:3.5];其中LogActionPresed是内部调用[[GIDSignIn sharedInstance] signIn]的方法
另一个可行的解决方案是在viewDidAppear中调用此方法
- (void) viewDidAppear:(BOOL)animated {
[self LogActionPresed:self];
}发布于 2017-08-22 08:53:40
在iOS 10上,我观察到,如果呈现视图控制器位于UINavigationController的堆栈中,它就能工作。如果呈现视图控制器不在这样的堆栈中,则web视图将保持空和白。
https://stackoverflow.com/questions/35375624
复制相似问题