我正在 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 项目存在重大缺陷。