Я борюсь с этим.Чтобы получить токен, я должен предоставить свой верификатор кода, который я использовал для создания запроса кода, ранее отправленного на сервер.Сервер всегда отвечает, я отправил неверный код проверки.Так что мой метод должен быть неправильным со всей вещью SHA256 и т. Д., Но я никогда не делал этого.Можете ли вы сказать мне, что не так с моим методом?В руководстве написано:
После того, как приложение сгенерировало верификатор кода, оно использует его для создания проблемы с кодом.Для устройств, которые могут выполнять хэш SHA256, вызов кода представляет собой строку в кодировке BASE64-URL хэша SHA256 средства проверки кода.Клиентам, которые не имеют возможности выполнять хэш SHA256, разрешается использовать в качестве запроса строку верификатора простого кода.
- (NSString *)createCodeChallengeWithVerifier:(NSString *)codeVerifier {
//Create ASCII
const char *asciiString = [codeVerifier cStringUsingEncoding:NSASCIIStringEncoding];
//Sha256
unsigned char buf[CC_SHA256_DIGEST_LENGTH];
CC_SHA256(asciiString, strlen(asciiString), buf);
NSMutableString * shaString = [NSMutableString stringWithCapacity:(CC_SHA256_DIGEST_LENGTH * 2)];
for (int i = 0; i < CC_SHA256_DIGEST_LENGTH; ++i) {
[shaString appendFormat:@"%02x", buf[i]];
}
//Base 64 encode
NSData *dataFromShaString = [shaString dataUsingEncoding:NSUTF8StringEncoding];
return([dataFromShaString base64EncodedStringWithOptions:0]);
}