ユーザーがアプリを起動するたびに認証手順を実行する必要はありません。代わりに、アプリが 3 脚の OAuth 1.0a プロセスからアクセス トークンを保存し、それらを使用して保護されたリソースにアクセスするようにします。
これが私がこれまでに持っているものであり、毎回承認する(サインインしない)ように求め続けます.
何か案は?助けてください。GTMOauth ライブラリの使用。
- (void)signIn
{
activityIndicator.hidden = NO;
[activityIndicator startAnimating];
NSURL *requestURL = [NSURL URLWithString:@"http://webservice/oauth/request_token/"];
NSURL *accessURL = [NSURL URLWithString:@"http://webservice/oauth/access_token/"];
NSURL *authorizeURL = [NSURL URLWithString:@"http://webservice/oauth/authorize/"];
NSString *scope = @"http://webservice";
auth = [self getAuthForWebservice];
[auth setCallback:@"http://webservice/OAuthCallback"];
GTMOAuthViewControllerTouch *viewController;
viewController = [[GTMOAuthViewControllerTouch alloc] initWithScope:scope
language:nil
requestTokenURL:requestURL
authorizeTokenURL:authorizeURL
accessTokenURL:accessURL
authentication:auth
appServiceName:@"webservice"
delegate:self
finishedSelector:@selector(viewController:finishedWithAuth:error:)];
[[self navigationController] pushViewController:viewController
animated:YES];
[self navigationController].navigationBarHidden = YES;
}
- (void)viewController:(GTMOAuthViewControllerTouch *)viewController
finishedWithAuth:(GTMOAuthAuthentication *)auth
error:(NSError *)error {
if (error == nil) {
[self performSelector:@selector(doAnAuthenticatedAPIFetch)];
}
}
- (void)doAnAuthenticatedAPIFetch {
NSString *urlStr = @"http://webservice/resource/";
NSURL *url = [NSURL URLWithString:urlStr];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[auth authorizeRequest:request];
NSError *error = nil;
NSURLResponse *response = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request
returningResponse:&response
error:&error];