我有一个在我们的 PHP 服务器上使用 2 腿 oAuth 的应用程序。我们当前解析 php://input 流以获取签名参数和原始帖子数据。但是,根据 php.net,您不能将输入流与多部分表单数据一起使用,因此当我尝试将图像从 iPhone 发送到服务器时,php://input 流是空的。
这是我对誓言规则的新问题,什么不是。
是否需要使用输入流与从 $POST 超级全局读取?我可以在同一个电话中发送签名和图像吗?
NSString *boundary = @"---------------------------14737809831466499882746641449";
NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n\r\n", @"signature"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[postVars dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:YES]];
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"uploadedfile\"; filename=\"tester.png\"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Type: application/octet-stream\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[NSData dataWithData:imageData]];
[postData appendData:[[NSString stringWithFormat:@"\r\n--%@--\r\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
我已经看到了一些使用签名参数设置授权标头的建议。在帖子正文中发送签名或设置授权标头是否正确?另外,我在如何使用 oAuth 上传和图像方面还有路要走吗?是否需要 2 次通话,或者我可以在同一次通话中进行签名和图像处理?
谢谢您的帮助。我们使用它来将数据从 iPhone 发送到我们的服务器,因此我们编写了双方,但希望遵循 oAuth 最佳实践。