gpt4 book ai didi

ios - 请求 accessToken 后,Splitwise API 返回 "Invalid OAuth Request"

转载 作者:行者123 更新时间:2023-11-29 02:54:27 25 4
gpt4 key购买 nike

我正在使用 OAuthConsumer 库的 iOS 兼容版本,并尝试根据 Splitwise 的 API 进行身份验证。获取 requestToken 和 verifier 后,我请求一个 accessToken,如下所示:

- (void)getAuthorizedAccessToken:(NSString *)pin {
NSURL *url = [NSURL URLWithString:@"https://secure.splitwise.com/api/v3.0/get_access_token"];
OAMutableURLRequest *request = [[OAMutableURLRequest alloc] initWithURL:url
consumer:self.consumer
token:self.accessToken
realm:nil
signatureProvider:nil];
OARequestParameter *token = [[OARequestParameter alloc] initWithName:@"oauth_token" value:self.accessToken.key];
OARequestParameter *verifier = [[OARequestParameter alloc] initWithName:@"oauth_secret" value:pin];
[request setParameters:@[token, verifier]];
[request setHTTPMethod:@"POST"];
OADataFetcher *fetcher = [[OADataFetcher alloc] init];
[fetcher fetchDataWithRequest:request
delegate:self
didFinishSelector:@selector(accessTokenTicket:didFinishWithData:)
didFailSelector:@selector(accessTokenTicket:didFailWithError:)];
NSLog(@"Sent access-token OAuth request");
}

但是当我的 didFinishWithData 函数返回时,我得到的只是一个错误:“无效的 OAuth 请求”,而我本希望这会成功。

- (void)accessTokenTicket:(OAServiceTicket *)ticket didFinishWithData:(NSData *)data {
NSLog(@"accessTokenTicket didFinishWithData");
if (ticket.didSucceed) {
NSString *responseBody = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
self.accessToken = [[OAToken alloc] initWithHTTPResponseBody:responseBody];
[self.accessToken storeInUserDefaultsWithServiceProviderName:@"WhoPays" prefix:@"WP"];
[self testAPIConnection];
} else {
NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
}
}

我已经将我的代码与这个针对 Twitter 的工作版本进行了比较,我认为我的逻辑似乎是有序的: https://code.google.com/p/oauthconsumer-iphone/source/browse/trunk/examples/oauthTwitterApp/Classes/oauthTwitterAppViewController.m

我的全部代码可以在这里找到: https://github.com/crummy/whopays/blob/master/WhoPays%3F/WPWelcomeViewController.m

最佳答案

嘿 Crummy – 这里是来自 Splitwise 的 Ryan。我周末刚要离开办公室,所以我没有机会亲自测试这个,但我可以在你的代码中看到至少一个错误:你正在初始化 OARequestParameter *verifier 名称错误(“oauth_secret” 而不是 “oauth_verifier”)。

此外,您可能需要调整代码,以便 oauth_tokenoauth_verifier 作为“授权”HTTP header 的一部分而不是作为 POST 参数传递.我们的服务器端 OAuth 实现有点挑剔,我不确定它是否允许 header 之外的这些值。如果你关注我们的docs简而言之,一切都应该工作正常。

希望对您有所帮助!如果您仍有问题,请在这里或通过 developers@splitwise.com 告诉我们,我们将在周一回复您:)

编辑:以防万一以后有人看到这篇文章,事实证明问题是 (1) 如上所述修复参数名称,以及 (2) 确保请求是通过 POST 发出的,而不是获取。

关于ios - 请求 accessToken 后,Splitwise API 返回 "Invalid OAuth Request",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24088834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com