iOS: как использовать AFOAuth1Client с данными токенами

0

Я хочу использовать службу REST, мне нужен OAuth 1, чтобы разрешить безопасную авторизацию. У меня есть потребительский ключ, секрет потребителя, токен и токен. В PHP я использую это:

$apiUrl = 'http://www.web.com/api/rest';
$consumerKey = 'xxxx';
$consumerSecret = 'yyyyyy';
$token = 'zzzzz';
$tokenSecret = 'wwwww';

session_start();

$authType = OAUTH_AUTH_TYPE_AUTHORIZATION;  
$oauthClient = new OAuth($consumerKey, $consumerSecret, OAUTH_SIG_METHOD_HMACSHA1, $authType);
$oauthClient->enableDebug();

$oauthClient->setToken($token, $tokenSecret);
$resourceUrl = "$apiUrl"; 
$headers = array('Content-Type' => 'application/json');

$oauthClient->fetch($resourceUrl.'/category/2681', array(), OAUTH_HTTP_METHOD_GET, $headers);

$productsList = $oauthClient->getLastResponse();

В Objective C я использую AFOAuth1Client, но я не знаю, когда и как установить токен в объекте AFOAuth1Client, например $oauthClient-> setToken ($ token, $ tokenSecret);

AFOAuth1Client *oAuth1Client = [[AFOAuth1Client alloc] initWithBaseURL:[NSURL URLWithString:kUrlPre] key:@"consumerKey" secret:@"consumerSecret"];

oAuth1Client.signatureMethod = AFHMACSHA1SignatureMethod;
oAuth1Client.accessToken = [[AFOAuth1Token alloc] initWithKey:@"consumerKey" secret:@"consumerSecret" session:nil expiration:nil renewable:YES]; //I have tried this, but when I add this line I'm getting this error: Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** setObjectForKey: object cannot be nil (key: oauth_token)' in authorizeUsingOAuthWithRequestTokenPath 

[oAuth1Client authorizeUsingOAuthWithRequestTokenPath:@"http://www.web.com/api/rest/category/2681"
                                    userAuthorizationPath:nil //??
                                              callbackURL:nil //I don't need it
                                          accessTokenPath:nil //I don't need it
                                             accessMethod:@"GET"
                                                    scope:nil 
                                                  success:^(AFOAuth1Token *accessToken, id responseObject) {
                                                      NSLog(@"Success: %@", accessToken);
                                                  } failure:^(NSError *error) {
                                                      NSLog(@"Error: %@", error);
                                                  }];

Я думаю, что использую bad uthorizeUsingOAuthWithRequestTokenPath. Как я могу проанализировать свой PHP-код для Objective C. Я открыт для использования других фреймворков OAuth.

Теги:
oauth
afnetworking

1 ответ

1
Лучший ответ

Наконец, я решил его использовать AFOAuth1Client с AFHTTPRequestOperation:

_oAuth1Client = [[AFOAuth1Client alloc] initWithBaseURL:[NSURL URLWithString:kUrlPre] key:kConsumerKey secret:kConsumerSecret];

[_oAuth1Client setDefaultHeader:@"Accept" value:@"application/json"];
[_oAuth1Client setSignatureMethod:AFHMACSHA1SignatureMethod];
[_oAuth1Client setAccessToken:[[AFOAuth1Token alloc] initWithKey:kToken secret:kTokenSecret session:nil expiration:nil renewable:FALSE]];
[_oAuth1Client registerHTTPOperationClass:[AFHTTPRequestOperation class]];

NSMutableURLRequest * request =[_oAuth1Client requestWithMethod:@"GET" path:[NSString stringWithFormat:@"%@", kUrlPre] parameters:nil];
AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject)
{
    NSLog(@"Response: %@", [[NSString alloc] initWithData:responseObject     encoding:NSUTF8StringEncoding]);
}
    failure:^(AFHTTPRequestOperation *operation, NSError *error)
{
    NSLog(@"Error: %@", error);
}];
[operation start];

Надеюсь, это поможет вам.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню