我有一個URL來獲取數據並顯示。在這裏,我需要遵循authAuthorization頭的一些步驟:爲Base64,SHA256 SHA512 0R如何使用「GET」獲取數據並進行顯示 - 使用Rest API的授權標頭
所以我在這裏編碼得到使用授權header.But數據在我的控制檯我得到了錯誤:
str: {
"error_code": "invalid_auth_header",
"message": "Invalid authorization. Use an auth header or access hash"
}
我是新到HTTP/GET,授權頭和所有。我做錯了什麼,我需要在那裏改變以解決問題?
這裏是我的代碼(這是基於以下答案更新代碼):
#import "ViewController.h"
#import <CommonCrypto/CommonDigest.h>
@interface ViewController()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSString *userName = @"[email protected]";
NSString *password = @"testingyouonit2";
NSData *plainData = [password dataUsingEncoding:NSUTF8StringEncoding];
NSString *base64String = [plainData base64EncodedStringWithOptions:0];
base64String=[self sha256HashFor: base64String];
//setting the string of the url taking from appliance IP.
NSString *urlString = @"https://api.exampleURL.com/files";
NSMutableURLRequest *request= [[NSMutableURLRequest alloc] init];
[request setURL:[NSURL URLWithString:urlString]];
[request setHTTPMethod:@"GET"];
NSString *authStr = [NSString stringWithFormat:@"%@:%@", userName, base64String];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64Encoding]];
[request setValue:authValue forHTTPHeaderField:@"Authorization"];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *str = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
NSLog(@"str: %@", str);
}
-(NSString*)sha256HashFor:(NSString*)input {
const char* str = [input UTF8String];
unsigned char result[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(str, strlen(str), result);
NSMutableString *ret = [NSMutableString stringWithCapacity:CC_SHA256_DIGEST_LENGTH*2];
for(int i = 0; i<CC_SHA256_DIGEST_LENGTH; i++) {
[ret appendFormat:@"%02x",result[i]];
}
return ret;
}
@jace我的問題是你的文章 – AAAbi
相關,我認爲這個問題是你把一個在標題值中輸入URL,試着輸入你生成的密碼,所以標題代碼應該如下所示:'[addValue:[NSString stringWithFormat:@「Basic%@」,base64String] forHTTPHeaderField:@「Authorization」];' – Scar
yes我有變化,但仍然得到了我上面提到的錯誤 – AAAbi