OAuth是一個關於授權(authorization)的開放網絡標准,定義了四種授權方式:
- 授權碼模式(authorization code)
- 簡化模式(implicit)
- 密碼模式(resource owner password credentials)
- 客戶端模式(client credentials)
具體的模式介紹就不多說了,我用到的是客戶端模式授權,沒有用官網提供的幾種解決辦法,我這里用的是AFOAuth2Manager,實現起來很簡單。
github地址: https://github.com/AFNetworking/AFOAuth2Manager
如果你是密碼模式,可以直接用下面的方法實現:
NSURL *baseURL = [NSURL URLWithString:@"http://example.com/"]; AFOAuth2Manager *OAuth2Manager = [[AFOAuth2Manager alloc] initWithBaseURL:baseURL clientID:kClientID secret:kClientSecret]; [OAuth2Manager authenticateUsingOAuthWithURLString:@"/oauth/token" username:@"username" password:@"password" scope:@"email" success:^(AFOAuthCredential *credential) { NSLog(@"Token: %@", credential.accessToken); } failure:^(NSError *error) { NSLog(@"Error: %@", error); }];
如果是客戶端模式,方法如下,
NSURL *baseURL = [NSURL URLWithString:@"http://example.com/"]; AFOAuth2Manager *OAuth2Manager = [[AFOAuth2Manager alloc] initWithBaseURL:baseURL clientID:kClientID secret:kClientSecret];
[OAuth2Manager authenticateUsingOAuthWithURLString:@"
/oauth/token
" scope:@"scope" success:^(AFOAuthCredential * _Nonnull credential) {
NSLog(@"---成功");
NSLog(@"Token: %@", credential.accessToken);
} failure:^(NSError * _Nonnull error) {
NSLog(@"---失敗");
}];