iOS6.0中的Facebook使用SLRequest上传照片失败 [英] Facebook in iOS6.0 use SLRequest to upload a photo failed anyway

查看:174
本文介绍了iOS6.0中的Facebook使用SLRequest上传照片失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这里有我的对象代码:

ACAccountStore *facebookaccount = [[ACAccountStore alloc] init];
ACAccountType *facebookaccountType = [facebookaccount accountTypeWithAccountTypeIdentifier: ACAccountTypeIdentifierFacebook];
// Specify App ID and permissions
NSDictionary *options = @{ ACFacebookAppIdKey: @"1234567899876543", ACFacebookPermissionsKey: @[@"publish_stream"], ACFacebookAudienceKey: ACFacebookAudienceFriends };
[facebookaccount requestAccessToAccountsWithType:facebookaccountType options:options completion:^(BOOL granted, NSError *error) {
    if(granted) {
        NSArray *accountsArray = [facebookaccount accountsWithAccountType:facebookaccountType];
        if ([accountsArray count] > 0) {
            ACAccount *facebookAccount = [accountsArray objectAtIndex:0];

            NSString *sendmessage = @"Face";
            NSData *myImageData = UIImagePNGRepresentation(imageSource);

            SLRequest *facebookRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook requestMethod:SLRequestMethodPOST URL:[NSURL URLWithString:@"https://graph.facebook.com/me/photos"] parameters:nil];

            [facebookRequest addMultipartData:myImageData withName:@"source" type:@"multipart/form-data" filename:nil];
            [facebookRequest addMultipartData:[sendmessage dataUsingEncoding:NSUTF8StringEncoding] withName:@"message" type:@"multipart/form-data" filename:nil];

            [facebookRequest setAccount:facebookAccount];

            [facebookRequest performRequestWithHandler:^(NSData* responseData, NSHTTPURLResponse* urlResponse, NSError* error) {
                if (error == nil) {
                    NSLog(@"responedata:%@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
                }else{
                    NSLog(@"%@",error.description);
                }
        }
    }
    else
    {
        NSLog(@"error description : %@",[NSString stringWithFormat:@"%@", error.localizedDescription]);
    }
}];

最后我得到这些respone数据:

Finally I get these respone data:

responedata:{error:{message:(#324)需要上传文件,type:OAuthException,code:324}}

responedata:{"error":{"message":"(#324) Requires upload file","type":"OAuthException","code":324}}

帮助我!!!

推荐答案

我可以通过在addMultipartData中包含一个文件名并通过传递该消息作为SLRequest选项的一部分。

I can successfully upload a photo by including a file name in addMultipartData and by passing the message as part of the SLRequest options.

代码:

NSDictionary *parameters = @{@"message": sendmessage};

SLRequest *facebookRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
                                            requestMethod:SLRequestMethodPOST
                                                      URL:[NSURL URLWithString:@"https://graph.facebook.com/me/photos"]
                                                           parameters:parameters];

[facebookRequest addMultipartData: myImageData
                                     withName:@"source"
                                         type:@"multipart/form-data"
                                     filename:@"TestImage"];

facebookRequest.account = facebookAccount;

[facebookRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
{
     // Log the result
}];

这篇关于iOS6.0中的Facebook使用SLRequest上传照片失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆