2016-10-18 4 views
0

Я общаюсь с .net api над сервером, и теперь в api они используют oAuth2. Поэтому в ios я должен получать токен обновления каждый раз, когда я делаю запрос, и в другом запросе мне нужно передать этот токен. Это похоже на «носитель TOKEN». Я использую AFNetworking в своем приложении. Любая идея заставить эту работу работать ?.Как я могу обновить токен с каждым запросом?

ответ

1

В AFNetworking3 вы будете использовать запрос HEAD, для получения токена обновления. И затем оставьте свой фактический запрос на блок успеха.

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
manager.requestSerializer = [AFHTTPRequestSerializer serializer]; 
manager.responseSerializer = [AFHTTPResponseSerializer serializer]; 
NSURLSessionDataTask *dataTask = [manager dataTaskWithHTTPMethod:@"HEAD" URLString:URLString parameters:parameters headerFields:headerFields success:^(NSURLSessionDataTask *task, __unused id responseObject) { 
    if (success) { 
     success(task); 
     // on success block you can fire your final API with below refresh token 
     [manager.requestSerializer setValue:@"Bearer RRFRESH_TOKEN" forHTTPHeaderField:@"Authorization"]; 
    } 
} failure:failure]; 

[dataTask resume]; 

Вы также создаете рабочий объект для выполнения обоих API, которые более управляемы и гибки.

1

Если вы используете AFHTTPSessionManager класс, чтобы сделать вас запросы, вы можете сделать следующее, прежде чем сделать запрос HTTP:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; 
[manager.requestSerializer setValue:@"Bearer YOUR_TOKEN" forHTTPHeaderField:@"Authorization"]; 
+0

Этот запрос даст токен обновления в то же время с моим ответом от api? –

+0

Я думаю, вам нужно выполнить отдельные запросы, один для получения токена, а другой, который должен будет использовать этот токен в заголовке –

+0

aahh, что я не хочу ... i 'рекурсивно запрашивает с сервера .. между спасибо за Помогите. –

Смежные вопросы