私は、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 プロジェクトに重大な欠陥があるとは思えません。