gpt4 book ai didi

ios - 使用适用于 iOS 的 OAuthConsumer 将图像上传到 tumblr

转载 作者:可可西里 更新时间:2023-11-01 06:23:42 25 4
gpt4 key购买 nike

我正在使用 OAuthConsumer在我的 iOS 应用程序中,它使用了 Tumblr API .进行 API 调用通常效果很好。但是,我很难上传任何媒体。当我请求的所有参数都是整数或字符串时,我就这样添加它们:

    [request setParameters:[NSArray arrayWithObjects:
[OARequestParameter requestParameterWithName:@"x_auth_username" value:username],
[OARequestParameter requestParameterWithName:@"x_auth_password" value:password],
nil]];

这显然不适用于例如图片。我发现我可能必须将此数据作为 multipart/form-data 而不是 application/x-www-form-urlencoded 发送,因此,它不会对 oAuth 签名有任何影响。然而,据我所知,OAuthConsumer 仅支持x-www-form-urlencoded(相关代码位于NSMutableURLRequest+Parameters.m)。但是,我不确定这是否正确,如果是这样,我真的不知道如何正确修改 Consumer。任何帮助将不胜感激!

最佳答案

好吧,我自己想通了。这有几个部分,因为我看到其他人有类似的问题,所以我将详细介绍:

首先,我使用的是过时版本的 OAuthConsumer。而不是使用 linked on Google Code 的版本, 你应该使用更新的版本 from github因为它包括发送包含多个字符串的多部分表单的方法。

现在,如果我没有完全错的话,理论上你现在应该做的是:

//Setup the request...
[request setParameters:params];
[request attachFileWithName:@"data" filename:@"photo.jpg" contentType:@"image/jpeg" data:dataProp.data];
//Setup the fetcher and send the request...

这将生成一个仅包含 oauth_... 变量的 oAuth 签名,将所有其他变量放入多部分形式。这是应该的,根据文档,你应该没问题。不幸的是,你不是,tumblr 将返回 401 错误,这很可能是由无效签名引起的。

这是你真正需要做的:

//Setup the request...
[request setParameters:params];
[request prepare]; //Whaaaat?
[request attachFileWithName:@"data" filename:@"photo.jpg" contentType:@"image/jpeg" data:dataProp.data];
//Setup the fetcher, make sure "prepare" isn't called again, send the request...

这会起作用...同样,我很确定这不是 oAuth 应该处理的方式,但至少它起作用了。

关于ios - 使用适用于 iOS 的 OAuthConsumer 将图像上传到 tumblr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10212975/

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