我尝试在我的应用中集成Facebook / Google +。我可以通过内置的Facebook框架,Google Plus框架,Google开源框架,在iOS应用中通过从设备的设置应用中添加的帐户中获取详细信息来实现。我也可以通过打开Safari浏览器并在登录Facebook和Goolge +后重定向到我的应用程序来实现。所以,我需要不重定向Safari浏览器。
答案 0 :(得分:2)
使用新的Google+ SDK,用户无需在Safari或任何浏览器中重新输入密码。 看看这个: https://developers.google.com/+/mobile/ios/sign-in
如果用户安装了原生Google或Google+移动应用,则用户无需重新输入其Google凭据即可授权您的应用。
或强>
尝试使用GTMOAuth2ViewControllerTouch
- (id)initWithScope:(NSString *)scope
clientID:(NSString *)clientID
clientSecret:(NSString *)clientSecret
keychainItemName:(NSString *)keychainItemName
completionHandler:(GTMOAuth2ViewControllerCompletionHandler)handler
在线提供大量参考资料。 Google Drive iOS SDK: Display Cancel Login Button
答案 1 :(得分:1)
请勿使用Google-Plus,请使用GoogleSignIn。 谷歌刚发布了这个解决方案:
关于问题900的评论#109 by fa ... @ google.com:iOS SDK SignIn don t 离开应用程序[Apple appstore rejection] https://code.google.com/p/google-plus-platform/issues/detail?id=900
大家好,
我很高兴宣布此问题的更新。今天,我们推出了 Google登录版本2.0,具有完全内置支持 通过WebView登录。我们希望这次更新能够最终弥补 由于使用我们的SDK而导致App Store拒绝的问题。
完整文档在这里: https://developers.google.com/identity/sign-in/ios
我们在这里写了一篇来自G +登录的迁移指南: https://developers.google.com/identity/sign-in/ios/quick-migration-guide
答案 2 :(得分:0)
您可以使用以下代码通过Google +使用Webview登录:
初始化UIWebview:
NSString *url = [NSString stringWithFormat:@"https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=%@&redirect_uri=%@&scope=%@",client_id,callbakc,scope];
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[webView setDelegate:self];
[self.view addSubview:webView];
[webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
委托方法的实施:
- (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {
// [indicator startAnimating];
if ([[[request URL] host] isEqualToString:@"localhost"]) {
// Extract oauth_verifier from URL query
NSString* verifier = nil;
NSArray* urlParams = [[[request URL] query] componentsSeparatedByString:@"&"];
for (NSString* param in urlParams) {
NSArray* keyValue = [param componentsSeparatedByString:@"="];
NSString* key = [keyValue objectAtIndex:0];
if ([key isEqualToString:@"code"]) {
verifier = [keyValue objectAtIndex:1];
break;
}
}
if (verifier) {
NSString *authToken = [NSString stringWithFormat:@"code=%@&client_id=%@&client_secret=%@&redirect_uri=%@&grant_type=authorization_code", verifier,client_id,secret,callbakc];
//Use Token to Login
} else {
// ERROR!
}
[webView removeFromSuperview];
webView = nil;
return NO;
}
return YES;
}
答案 3 :(得分:0)
使用 Scocial.framework https://developer.apple.com/library/ios/documentation/Social/Reference/Social_Framework/
p 'data' w lp, "" smooth csplines