google ios9 中的登录问题
google signin issue in ios9
我在项目中工作,该项目在应用程序中具有 google 登录功能。
该应用程序在所有 iOS 中运行良好,除了 iOS9 及更高版本。
下面是我用于 google 登录的代码:-
-(void)methodcallwhenclick_ongoogleSigninbutton{
GIDSignIn *signInInstance = [GIDSignIn sharedInstance];
signInInstance.delegate = self;
GIDSignIn *signIn = [GIDSignIn sharedInstance];
[signIn signOut];
signIn.shouldFetchBasicProfile = YES;
signIn.delegate = self;
signIn.uiDelegate = self;
[signIn setClientID:@"<Clientkey>.apps.googleusercontent.com"];
[signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
[signIn setDelegate: self];
[signIn signIn];
}
此方法在我成功登录到应用程序时调用,但在 ios9 中此方法未在 Web 视图中打开 called.The google 登录视图,在我单击 "ALLOW" 网络视图被解雇。
我无法在 ios9.Is 中获得 google 的授权码 有任何方法可以在 ios9 和更高版本
中调用此方法
- (void)signIn:(GIDSignIn *)signIn
didSignInForUser:(GIDGoogleUser *)user
withError:(NSError *)error
{
}
我遇到了同样的问题:google 通过 GIDSignIn 登录非常适合
但对于 iOS9,Google.com 页面会在按下允许后打开。如果我在此页面上按“完成”按钮,控件将进入上述方法,错误 = Error Domain=com.google.GIDSignIn Code=-5 "The user canceled the sign-in flow." UserInfo={NSLocalizedDescription=The user cancelled the sign-in flow.}
我研究了一下。找到两个可能的解决方案:
白名单登录相关网址-
使用handleurl调用-
没时间测试哪个最适合。最终解决方案一出就会更新。
更新:做到了!!
iOS9 已更新 handleUrl() 调用。精简了两种做法如下:
(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0)
{
return [self application:app
processOpenURLAction:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
iosVersion:9];
}
(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self application:application
processOpenURLAction:url
sourceApplication:sourceApplication
annotation:annotation
iosVersion:8];
}
(BOOL)application:(UIApplication *)application processOpenURLAction:(NSURL*)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation iosVersion:(int)version
{
return [[GIDSignIn sharedInstance] handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
这对我有用。我正在经历 GIDGoogleUser 的对象变为零。错误是 'The user canceled the sign-in flow'。正确的类型转换是使用 as!。这个
删除了点击 'Done'.
后挂起的 safari
在 AppDelegate 上:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
let result = GIDSignIn.sharedInstance().handle(url,
//added exclamation mark
sourceApplication: String(describing: options[UIApplicationOpenURLOptionsKey.sourceApplication]!),
annotation: options[UIApplicationOpenURLOptionsKey.annotation])
return result
}
我在项目中工作,该项目在应用程序中具有 google 登录功能。 该应用程序在所有 iOS 中运行良好,除了 iOS9 及更高版本。
下面是我用于 google 登录的代码:-
-(void)methodcallwhenclick_ongoogleSigninbutton{
GIDSignIn *signInInstance = [GIDSignIn sharedInstance];
signInInstance.delegate = self;
GIDSignIn *signIn = [GIDSignIn sharedInstance];
[signIn signOut];
signIn.shouldFetchBasicProfile = YES;
signIn.delegate = self;
signIn.uiDelegate = self;
[signIn setClientID:@"<Clientkey>.apps.googleusercontent.com"];
[signIn setScopes:[NSArray arrayWithObject:@"https://www.googleapis.com/auth/plus.login"]];
[signIn setDelegate: self];
[signIn signIn];
}
此方法在我成功登录到应用程序时调用,但在 ios9 中此方法未在 Web 视图中打开 called.The google 登录视图,在我单击 "ALLOW" 网络视图被解雇。 我无法在 ios9.Is 中获得 google 的授权码 有任何方法可以在 ios9 和更高版本
中调用此方法- (void)signIn:(GIDSignIn *)signIn
didSignInForUser:(GIDGoogleUser *)user
withError:(NSError *)error
{
}
我遇到了同样的问题:google 通过 GIDSignIn 登录非常适合
但对于 iOS9,Google.com 页面会在按下允许后打开。如果我在此页面上按“完成”按钮,控件将进入上述方法,错误 = Error Domain=com.google.GIDSignIn Code=-5 "The user canceled the sign-in flow." UserInfo={NSLocalizedDescription=The user cancelled the sign-in flow.}
我研究了一下。找到两个可能的解决方案:
白名单登录相关网址-
使用handleurl调用-
没时间测试哪个最适合。最终解决方案一出就会更新。
更新:做到了!!
iOS9 已更新 handleUrl() 调用。精简了两种做法如下:
(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options NS_AVAILABLE_IOS(9_0)
{
return [self application:app
processOpenURLAction:url
sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
annotation:options[UIApplicationOpenURLOptionsAnnotationKey]
iosVersion:9];
}
(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
return [self application:application
processOpenURLAction:url
sourceApplication:sourceApplication
annotation:annotation
iosVersion:8];
}
(BOOL)application:(UIApplication *)application processOpenURLAction:(NSURL*)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation iosVersion:(int)version
{
return [[GIDSignIn sharedInstance] handleURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
这对我有用。我正在经历 GIDGoogleUser 的对象变为零。错误是 'The user canceled the sign-in flow'。正确的类型转换是使用 as!。这个 删除了点击 'Done'.
后挂起的 safari在 AppDelegate 上:
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool {
let result = GIDSignIn.sharedInstance().handle(url,
//added exclamation mark
sourceApplication: String(describing: options[UIApplicationOpenURLOptionsKey.sourceApplication]!),
annotation: options[UIApplicationOpenURLOptionsKey.annotation])
return result
}