如何整合Facebook / Google +而无需在iOS应用中重定向Safari浏览器

时间:2015-05-15 07:47:32

标签: ios google-api google-oauth

我尝试在我的应用中集成Facebook / Google +。我可以通过内置的Facebook框架,Google Plus框架,Google开源框架,在iOS应用中通过从设备的设置应用中添加的帐户中获取详细信息来实现。我也可以通过打开Safari浏览器并在登录Facebook和Goolge +后重定向到我的应用程序来实现。所以,我需要不重定向Safari浏览器。

4 个答案:

答案 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