过期后如何在 Box api 中获取新的访问令牌
Posted
技术标签:
【中文标题】过期后如何在 Box api 中获取新的访问令牌【英文标题】:How to get new Access Token in Box api after it getting expire 【发布时间】:2014-10-09 22:47:03 【问题描述】:以下是 Box Api 教程中给出的获取新访问令牌的过程。
卷曲https://www.box.com/api/oauth2/token
-d 'grant_type=refresh_token&refresh_token=有效刷新令牌&client_id= your_client_id&client_secret=your_client_secret'
-X 发布
这是我的代码
NSString* refresh =[NSString stringWithFormat:@"%@",[[arrUseraccounts objectAtIndex:[BoxDownloadFileViewControlller getSharedInstance].index] objectForKey:@"refresh_token"]];
NSString* clientId =[NSString stringWithFormat:@"%@",[BoxSDK sharedSDK].OAuth2Session.clientID];
NSString* clientSecret =[NSString stringWithFormat:@"%@", [BoxSDK sharedSDK].OAuth2Session.clientSecret];
// NSDictionary * dic = [NSDictionary dictionaryWithObject:refresh forKey:@"refresh_token"];
ASIFormDataRequest *postParams = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"https://www.box.com/api/oauth2/token?"]];
//
// ASIFormDataRequest *postParams = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"https://www.box.com/api/oauth2/token?grant_type=refresh_token&refresh_token=%@&client_id=%@&client_secret=%@",refresh,clientId,clientSecret]]];
[postParams setRequestMethod:@"POST"];
//[postParams setPostBody:data];
[postParams setPostValue:@"refresh_token" forKey:@"grant_type"];
[postParams setPostValue:refresh forKey:@"refresh_token"];
[postParams setPostValue:clientId forKey:@"client_id"];
[postParams setPostValue:clientSecret forKey:@"client_secret"];
[postParams startAsynchronous];
postParams.delegate = self ;
postParams.userInfo = [NSDictionary dictionaryWithObject:@"accessToken" forKey:@"id"];
NSLog(@"Url is ---> %@",postParams.url);
NSLog(@"response string is-----> %@",postParams.responseString);
我遇到了以下问题。
"error":"invalid_client","error_description":"The client credentials are invalid"
请建议 mne 如何传递 Box Api 教程中给出的参数。
【问题讨论】:
【参考方案1】:我得到了解决方案。
NSString* refresh =your refresh token;
NSString* clientId =[NSString stringWithFormat:@"%@",[BoxSDK sharedSDK].OAuth2Session.clientID];
NSString* clientSecret =[NSString stringWithFormat:@"%@", [BoxSDK sharedSDK].OAuth2Session.clientSecret];
ASIFormDataRequest *postParams = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"https://www.box.com/api/oauth2/token?"]];
[postParams setRequestMethod:@"POST"];
[postParams setPostValue:@"refresh_token" forKey:@"grant_type"];
[postParams setPostValue:refresh forKey:@"refresh_token"];
[postParams setPostValue:clientId forKey:@"client_id"];
[postParams setPostValue:clientSecret forKey:@"client_secret"];
[postParams startAsynchronous];
postParams.delegate = self ;
postParams.userInfo = [NSDictionary dictionaryWithObject:@"accessToken" forKey:@"id"];
NSLog(@"Url is ---> %@",postParams.url);
【讨论】:
以上是关于过期后如何在 Box api 中获取新的访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何在到期后使用 OAuth 2.0 以及 iOS 应用程序中的 Youtube API 获取新的访问令牌
Azure API 管理 - 如何刷新访问令牌后端 API?