GTMOAuth
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(GTMOAuth);
*目次 [#qea7a900]
#contents
*参考情報 [#t3892a5a]
-[[gtm-oauth - Google Toolbox for Mac - OAuth Controllers...
-[[GTMOAuthでTwitterなどのOAuthを行う方法 - Awaresoft:htt...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その1 ...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その2 ...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その3 ...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その4 ...
*基本 [#x97244e3]
-TwitterのWebページをUIWebViewで表示しOAuth認証するライブ...
-OAuthするだけなので、Twitterでつぶやくとかそういう機能は...
*サンプル: OAuthSampleTouch [#a5991874]
**基本 [#yd2b2ddb]
-GTMOAuthをダウンロードしたフォルダの中にある、OAuthSampl...
-ビルドしてもそのまま動かないので、OAuthSampleRootViewCon...
-以下TwitterのOAuth認証を利用する場合の修正方法を説明。
-Twitterアプリは予めdev.twitter.comで登録しておく。認証タ...
** OAuthSampleRootViewControllerTouch.mのauthForTwitterの...
-ConsumerKey, ConsumerSecretを自分のTwitterアプリのものに...
#pre{{
- (GTMOAuthAuthentication *)authForTwitter {
//以下を修正
NSString *myConsumerKey = @"YourConsumerKey";
NSString *myConsumerSecret = @"YourConsumerSecret";
if ([myConsumerKey length] == 0 || [myConsumerSecret le...
return nil;
}
GTMOAuthAuthentication *auth;
auth = [[[GTMOAuthAuthentication alloc] initWithSignatu...
c...
...
[auth setServiceProvider:kTwitterServiceName];
return auth;
}
}}
**signInToTwitterの修正 [#jacafd5e]
-OAuthに必要なURLを修正する。変わる可能性があるのでTwitte...
-scopeはnilでいいらしい。
-setCallbackで設定するURLはダミーでいいらしい。
-setBrowserCookiesURLでセットするURLはブラウザのCookieを...
#pre{{
- (void)signInToTwitter {
[self signOut];
NSURL *requestURL = [NSURL URLWithString:@"https://api....
NSURL *accessURL = [NSURL URLWithString:@"https://api.t...
NSURL *authorizeURL = [NSURL URLWithString:@"https://ap...
GTMOAuthAuthentication *auth = [self authForTwitter];
if (auth == nil) {
// perhaps display something friendlier in the UI?
NSAssert(NO, @"A valid consumer key and consumer secr...
}
//これはダミーでいいらしい
[auth setCallback:@"http://www.example.com/OAuthCallbac...
NSString *keychainItemName = nil;
if ([self shouldSaveInKeychain]) {
keychainItemName = kTwitterKeychainItemName;
}
// Display the autentication view.
GTMOAuthViewControllerTouch *viewController;
viewController = [[[GTMOAuthViewControllerTouch alloc] ...
language:nil
requestTokenURL:requestURL
authorizeTokenURL:authorizeURL
accessTokenURL:accessURL
authentication:auth
appServiceName:keychainItemName
delegate:self
finishedSelector:@selector(viewController:finishe...
// Cookieを消去するURLこれもhttpsバージョンにしたほうが...
[viewController setBrowserCookiesURL:[NSURL URLWithStri...
[[self navigationController] pushViewController:viewCon...
}
}}
**動作確認 [#b8579aa4]
-Twitterを選び、[Sign In]ボタンを押す。
#ref(start.png)
-Twitterアカウントを入力。
#ref(twitter.png)
-AccessTokenが表示される。デバッガ出力に動作確認として認...
#ref(finish.png)
**動作の流れ解説 [#s24e0a6d]
***認証開始 [#t1690249]
-[Sign in]ボタンを押すとsignInOutClicked→signInToTwitter...
-signInToTwitterでは、GTMOAuthViewControllerTouchが呼ばれ...
***認証成功 [#m952e8f4]
-Web認証が終わるとGTMOAuthSignIn.mのaccessFetcher:finishW...
#pre{{
- (void)accessFetcher:(GTMHTTPFetcher *)fetcher finishedW...
[self setPendingFetcher:nil fetchType:nil];
if (error) {
[self invokeFinalCallbackWithError:error];
} else {
// we have an access token
[auth_ setKeysForResponseData:data];
[auth_ setHasAccessToken:YES];
#if !GTM_OAUTH_SKIP_GOOGLE_SUPPORT
if (shouldFetchGoogleUserInfo_
&& [[auth_ serviceProvider] isEqual:kGTMOAuthServ...
// fetch the user's information from the Google ser...
[self fetchGoogleUserInfo];
} else {
// we're not authorizing with Google, so we're done
[self invokeFinalCallbackWithError:nil];
}
#else
[self invokeFinalCallbackWithError:nil];
#endif
}
}
}}
- [auth_ setKeysForResponseData:data]は、GTMOAuthAuthent...
#pre{{
- (void)setKeysForResponseDictionary:(NSDictionary *)dict {
NSString *token = [dict objectForKey:kOAuthTokenKey];
if (token) {
[self setToken:token];
}
NSString *secret = [dict objectForKey:kOAuthTokenSecret...
if (secret) {
[self setTokenSecret:secret];
}
NSString *callbackConfirmed = [dict objectForKey:kOAuth...
if (callbackConfirmed) {
[self setCallbackConfirmed:callbackConfirmed];
}
NSString *verifier = [dict objectForKey:kOAuthVerifierK...
if (verifier) {
[self setVerifier:verifier];
}
NSString *provider = [dict objectForKey:kServiceProvide...
if (provider) {
[self setServiceProvider:provider];
}
NSString *email = [dict objectForKey:kUserEmailKey];
if (email) {
[self setUserEmail:email];
}
NSString *verified = [dict objectForKey:kUserEmailIsVer...
if (verified) {
[self setUserEmailIsVerified:verified];
}
}
}}
-次にGTMOAuthSignIn.mのaccessFetcher:finishWithData:error...
#pre{{
+ (BOOL)saveParamsToKeychainForName:(NSString *)appServic...
authentication:(GTMOAuthAuthenticati...
[self removeParamsFromKeychainForName:appServiceName];
// don't save unless we have a token that can really au...
if (![auth hasAccessToken]) return NO;
// make a response string containing the values we want...
NSString *password = [auth persistenceResponseString];
GTMOAuthKeychain *keychain = [GTMOAuthKeychain defaultK...
return [keychain setPassword:password
forService:appServiceName
account:kGTLOAuthAccountName
error:nil];
}
}}
-最後に、GTMOAuthSignIn.mのaccessFetcher:finishWithData:e...
***保存済みの認証情報の利用 [#nfac1dab]
-次のように初期化する。kTwitterKeychainItemNameは当然保存...
#pre{{
_auth = [[GTMOAuthAuthentication alloc] initWith...
...
...
BOOL didAuth = [GTMOAuthViewControllerTouch autho...
...
NSLog(@"didAuth=%d", didAuth);
}}
*自前のプロジェクトに組み込む [#j88b6a5d]
-Security.frameworkとSystemConfiguration.frameworkの追加...
-GTMHTTPFetcherLogging.mでSBJsonを使っている。
終了行:
&tag(GTMOAuth);
*目次 [#qea7a900]
#contents
*参考情報 [#t3892a5a]
-[[gtm-oauth - Google Toolbox for Mac - OAuth Controllers...
-[[GTMOAuthでTwitterなどのOAuthを行う方法 - Awaresoft:htt...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その1 ...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その2 ...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その3 ...
-[[予定外 [iOS5/ARC対応] iOSでTwitterクライアント その4 ...
*基本 [#x97244e3]
-TwitterのWebページをUIWebViewで表示しOAuth認証するライブ...
-OAuthするだけなので、Twitterでつぶやくとかそういう機能は...
*サンプル: OAuthSampleTouch [#a5991874]
**基本 [#yd2b2ddb]
-GTMOAuthをダウンロードしたフォルダの中にある、OAuthSampl...
-ビルドしてもそのまま動かないので、OAuthSampleRootViewCon...
-以下TwitterのOAuth認証を利用する場合の修正方法を説明。
-Twitterアプリは予めdev.twitter.comで登録しておく。認証タ...
** OAuthSampleRootViewControllerTouch.mのauthForTwitterの...
-ConsumerKey, ConsumerSecretを自分のTwitterアプリのものに...
#pre{{
- (GTMOAuthAuthentication *)authForTwitter {
//以下を修正
NSString *myConsumerKey = @"YourConsumerKey";
NSString *myConsumerSecret = @"YourConsumerSecret";
if ([myConsumerKey length] == 0 || [myConsumerSecret le...
return nil;
}
GTMOAuthAuthentication *auth;
auth = [[[GTMOAuthAuthentication alloc] initWithSignatu...
c...
...
[auth setServiceProvider:kTwitterServiceName];
return auth;
}
}}
**signInToTwitterの修正 [#jacafd5e]
-OAuthに必要なURLを修正する。変わる可能性があるのでTwitte...
-scopeはnilでいいらしい。
-setCallbackで設定するURLはダミーでいいらしい。
-setBrowserCookiesURLでセットするURLはブラウザのCookieを...
#pre{{
- (void)signInToTwitter {
[self signOut];
NSURL *requestURL = [NSURL URLWithString:@"https://api....
NSURL *accessURL = [NSURL URLWithString:@"https://api.t...
NSURL *authorizeURL = [NSURL URLWithString:@"https://ap...
GTMOAuthAuthentication *auth = [self authForTwitter];
if (auth == nil) {
// perhaps display something friendlier in the UI?
NSAssert(NO, @"A valid consumer key and consumer secr...
}
//これはダミーでいいらしい
[auth setCallback:@"http://www.example.com/OAuthCallbac...
NSString *keychainItemName = nil;
if ([self shouldSaveInKeychain]) {
keychainItemName = kTwitterKeychainItemName;
}
// Display the autentication view.
GTMOAuthViewControllerTouch *viewController;
viewController = [[[GTMOAuthViewControllerTouch alloc] ...
language:nil
requestTokenURL:requestURL
authorizeTokenURL:authorizeURL
accessTokenURL:accessURL
authentication:auth
appServiceName:keychainItemName
delegate:self
finishedSelector:@selector(viewController:finishe...
// Cookieを消去するURLこれもhttpsバージョンにしたほうが...
[viewController setBrowserCookiesURL:[NSURL URLWithStri...
[[self navigationController] pushViewController:viewCon...
}
}}
**動作確認 [#b8579aa4]
-Twitterを選び、[Sign In]ボタンを押す。
#ref(start.png)
-Twitterアカウントを入力。
#ref(twitter.png)
-AccessTokenが表示される。デバッガ出力に動作確認として認...
#ref(finish.png)
**動作の流れ解説 [#s24e0a6d]
***認証開始 [#t1690249]
-[Sign in]ボタンを押すとsignInOutClicked→signInToTwitter...
-signInToTwitterでは、GTMOAuthViewControllerTouchが呼ばれ...
***認証成功 [#m952e8f4]
-Web認証が終わるとGTMOAuthSignIn.mのaccessFetcher:finishW...
#pre{{
- (void)accessFetcher:(GTMHTTPFetcher *)fetcher finishedW...
[self setPendingFetcher:nil fetchType:nil];
if (error) {
[self invokeFinalCallbackWithError:error];
} else {
// we have an access token
[auth_ setKeysForResponseData:data];
[auth_ setHasAccessToken:YES];
#if !GTM_OAUTH_SKIP_GOOGLE_SUPPORT
if (shouldFetchGoogleUserInfo_
&& [[auth_ serviceProvider] isEqual:kGTMOAuthServ...
// fetch the user's information from the Google ser...
[self fetchGoogleUserInfo];
} else {
// we're not authorizing with Google, so we're done
[self invokeFinalCallbackWithError:nil];
}
#else
[self invokeFinalCallbackWithError:nil];
#endif
}
}
}}
- [auth_ setKeysForResponseData:data]は、GTMOAuthAuthent...
#pre{{
- (void)setKeysForResponseDictionary:(NSDictionary *)dict {
NSString *token = [dict objectForKey:kOAuthTokenKey];
if (token) {
[self setToken:token];
}
NSString *secret = [dict objectForKey:kOAuthTokenSecret...
if (secret) {
[self setTokenSecret:secret];
}
NSString *callbackConfirmed = [dict objectForKey:kOAuth...
if (callbackConfirmed) {
[self setCallbackConfirmed:callbackConfirmed];
}
NSString *verifier = [dict objectForKey:kOAuthVerifierK...
if (verifier) {
[self setVerifier:verifier];
}
NSString *provider = [dict objectForKey:kServiceProvide...
if (provider) {
[self setServiceProvider:provider];
}
NSString *email = [dict objectForKey:kUserEmailKey];
if (email) {
[self setUserEmail:email];
}
NSString *verified = [dict objectForKey:kUserEmailIsVer...
if (verified) {
[self setUserEmailIsVerified:verified];
}
}
}}
-次にGTMOAuthSignIn.mのaccessFetcher:finishWithData:error...
#pre{{
+ (BOOL)saveParamsToKeychainForName:(NSString *)appServic...
authentication:(GTMOAuthAuthenticati...
[self removeParamsFromKeychainForName:appServiceName];
// don't save unless we have a token that can really au...
if (![auth hasAccessToken]) return NO;
// make a response string containing the values we want...
NSString *password = [auth persistenceResponseString];
GTMOAuthKeychain *keychain = [GTMOAuthKeychain defaultK...
return [keychain setPassword:password
forService:appServiceName
account:kGTLOAuthAccountName
error:nil];
}
}}
-最後に、GTMOAuthSignIn.mのaccessFetcher:finishWithData:e...
***保存済みの認証情報の利用 [#nfac1dab]
-次のように初期化する。kTwitterKeychainItemNameは当然保存...
#pre{{
_auth = [[GTMOAuthAuthentication alloc] initWith...
...
...
BOOL didAuth = [GTMOAuthViewControllerTouch autho...
...
NSLog(@"didAuth=%d", didAuth);
}}
*自前のプロジェクトに組み込む [#j88b6a5d]
-Security.frameworkとSystemConfiguration.frameworkの追加...
-GTMHTTPFetcherLogging.mでSBJsonを使っている。
ページ名: