将OAuth2添加到iOS项目中

5
我在尝试将OAuth2集成到一个工程中时遇到很大的困难。我看了各种不同的OAuth客户端,但是文档很少,示例工程也过时了。我想做的只是用我的clientID和secret硬编码获取授权令牌,并且使用ARC/storyboards。
我已经尝试过OAuthConsumer、LROAuth2Client、GTM-OAuth2、OAuth2Client by nxtbgthng等库。如果你能指点我一些教程、基础示例应用或者其他有用的信息就太好了。我发现唯一能找到的示例应用都很老了,而且没有使用ARC或storyboards。

1
我已经得到了一个可工作的LROAuth2Client实现。你能否修改LROAuth2Client以使其与ARC兼容?如果是这样,我可以帮助你。 - TompaLompa
LROAuth2Client 的最新版本(截至19天前)现在已经完全兼容 ARC。但我仍然在努力实现它。 - Mike Z
好的,你遇到了什么困难? - TompaLompa
当我调用[oauthClient authorizeUsingWebView:self.myWebView];时,我的应用程序崩溃了。我已经尝试了所有我能想到的调试技巧,但这一行代码是问题的根源。 - Mike Z
我认为这是因为在init方法中分配webView(myWebView)后,它以某种方式被释放了。我对它进行了保留(retain): - TompaLompa
2个回答

2
 - (id)init{
    self =  [super init];
    self.view.frame = CGRectMake(0, 0, 320, 480);
    [self.view setBackgroundColor:[UIColor whiteColor]];

    /*****OAUTHCLIENT SETUP*****/
    oauthClient = [[SBOAuth2Client alloc] initWithClientID:@"foo" secret:@"foo" redirectURL:[NSURL URLWithString:@"http://foo.com/"]];
    oauthClient.userURL  = [NSURL URLWithString:userUrl];
    oauthClient.tokenURL = [NSURL URLWithString:tokenUrl];
    oauthClient.delegate = self; 

    /*****WEBVIEW SETUP*****/
    webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)] retain];
    [self.view addSubview:webView];
    return self;
}

1

就像这样:

 webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)] retain];

或者

 if(webView==nil){
    //allocate it again
 }
 [oauthClient authorizeUsingWebView:webView];

嗯...我尝试让我的webView强大起来,基本上是ARC中retain的等效物,但它仍然存在问题。你有没有可能有一个基本的实现,我可以看一下这个项目?我很快就会将我的尝试上传到git repo。 - Mike Z
这里是一个 Github 仓库,其中包含对我而言无法正常工作的内容。 - Mike Z
我正在查看您的ViewController.m文件,但是我没有看到实例化myWebView。 - TompaLompa
在那个版本中,它是在故事板中实例化的。我还尝试过在代码中实例化它:UIWebView *newWebView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)]; [self.view addSubview:newWebView]; [oauthClient authorizeUsingWebView:newWebView]; - Mike Z
我知道,你能贴出你的堆栈跟踪吗? - TompaLompa
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接