簡體   English   中英

無論如何,iOS6.0中的Facebook使用SLRequest上傳照片失敗

[英]Facebook in iOS6.0 use SLRequest to upload a photo failed anyway

這是我的Objc代碼:

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]);
    }
}];

最后我得到了這些響應數據:

responedata:{“error”:{“message”:“(#324)需要上傳文件”,“類型”:“OAuthException”,“code”:324}}

請幫幫我!!!

我可以通過在addMultipartData中包含文件名並將消息作為SLRequest選項的一部分傳遞來成功上傳照片。

碼:

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
}];

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM