3

我正在 Mac OSX 上构建一个供个人使用的小型 Instagram 客户端。我目前正在使用 gtm-oauth2 从 Instagram 获取 oauth2 令牌。我正在按照源提供的指南来获取此令牌。我有 90% 的工作。webView 加载了身份验证详细信息,我可以输入我的帐户,然后出现权限屏幕,询问我是否要授予我的应用程序访问权限。我遇到的问题是,在进行身份验证后,无论我“允许”还是“取消”,应用程序都会崩溃,没有堆栈跟踪或其他信息。我得到的关于异常的唯一信息是“线程 1:EXC_BAD_ACCESS(代码 = 1,地址 = 0x4c1)”,看起来该线程正在做与 WebCore::ResourceLoader 相关的事情,但它是一堆 ASM,所以我' 我不知道这个电话实际发生在哪里。也许我没有正确调用 windowController?我的代码包含在下面。

- (void)signIntoInstagram {

NSURL *tokenURL =[NSURL URLWithString:kTOKENIURl];

// Set up the OAuth request

GTMOAuth2Authentication *auth = [GTMOAuth2Authentication
                                 authenticationWithServiceProvider:@"Instagram"
                                 tokenURL:tokenURL
                                 redirectURI:kREDIRECTURI
                                 clientID:KCLIENTID
                                 clientSecret:KCLIENTSERCRET
                                 ];

// Specify the appropriate scope string, if any, according to the service's API documentation
auth.scope = @"basic";

NSURL *authURL = [NSURL URLWithString:KAUTHURL];

// Display the authentication view
GTMOAuth2WindowController *windowController;
windowController = [GTMOAuth2WindowController controllerWithAuthentication:auth
                                                          authorizationURL:authURL
                                                          keychainItemName:kKeychainItemName
                                                            resourceBundle:nil];

// optional: display some html briefly before the sign-in page loads
NSString *html = @"<html><body><div align=center>Loading sign-in page...</div></body></html>";
[windowController setInitialHTMLString:html];

[windowController signInSheetModalForWindow:_window
                                   delegate:self
                           finishedSelector:@selector(windowController:finishedWithAuth:error:)];}

如果我在 windowController:finishedWithAuth:error: 方法中插入断点,则应用程序正在到达它。但是,它在我运行后仍然崩溃,这对我来说似乎是某种导致错误的异步操作。希望我只是在这里遗漏了一些简单的东西;我无法想象 Google 的 OAuth 项目存在重大缺陷。

4

1 回答 1

3

在遇到同样的问题https://groups.google.com/forum/#!msg/gtm-oauth/N6jlOpL9k5g/n4TdrTJyxzcJ后,我在 Google 群组中找到了这个。还记录了一个问题https://code.google.com/p/gtm-oauth/issues/detail?id=11

基本上我注释掉了 GTMOAuth2WindowController.m 的第 331 行并且它起作用了。你也可以为这个问题添加你的投票,也许谷歌会解决它。

于 2014-08-25T18:14:12.200 回答