繁体   English   中英

以管理员身份将图片发布到Facebook页面

[英]Publishing picture to facebook page as admin

我在将照片从ios应用发布到Facebook页面作为页面的管理员时遇到问题。 我只能以管理员身份发布的是状态消息。

这是我做的。

// get access token first
[FBRequestConnection startWithGraphPath:@"/__facebook_page_id__?fields=access_token" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

    // make sure its not nil
    if ([result valueForKey:@"access_token"] != nil) {
        NSString *accessToken = [result objectForKey:@"access_token"];

        NSLog(@"Access token: %@", accessToken);

        NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
        [params setObject:@"This is some status message" forKey:@"message"];
        [params setObject:accessToken forKey:@"access_token"];

        [FBRequestConnection startWithGraphPath:@"/__facebook_page_id__/feed" parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

            NSLog(@"Result: %@", result);
            NSLog(@"Error: %@", error);

        }];
    }

}];

上面的代码以admin身份成功发布到Facebook页面 由于我需要发布照片,因此需要将抓取路径更改为/ facebook_page_id / photos。

NSMutableDictionary* params = [[NSMutableDictionary alloc] init];
[params setObject:UIImagePNGRepresentation(self.imagePreview.image) forKey:@"picture"];
[params setObject:@"This is some description" forKey:@"message"];
[params setObject:accessToken forKey:@"access_token"];

[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/__facebook_page_id__/photos"] parameters:params HTTPMethod:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

    NSLog(@"Result: %@", result);
    NSLog(@"Error: %@", error);

}];

上面的代码已成功发布,但没有以admin身份发布。 即使我正在使用页面的访问令牌。

我以为fb_page_id / photos路径已损坏,因此我尝试使用fb_page_id / feed并发送其他字段(例如链接,图片等)。但是,它还是作为用户发布的,而不是页面的管理员。

如果我做错了,请告诉我。

一些信息:-部署目标:5.1及更高版本-Facebook SDK版本:3.7

先感谢您。

我终于找到了答案。 万一有人遇到同样的问题,这就是我在做什么。

  1. 通过访问/page_id?fields=access_token您将需要页面的/page_id?fields=access_token

    [FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@“ /%@?fields = access_token”,FB_PAGE_ID] completeHandler:^(FBRequestConnection *连接,id结果,NSError * error){

     // if the access_token is not there, the user might not able to post. check the permission if ([result valueForKey:@"access_token"] != nil) { NSString *accessToken = [result objectForKey:@"access_token"]; } 

    }];

  2. 获取页面的access_token后,您需要使用REST API发布图像。 在这里,我正在使用AFNetworking,并手动上传图像。

    如果([result valueForKey:@“ access_token”]!= nil){NSString * accessToken = [结果objectForKey:@“ access_token”];

     NSURL *url = [NSURL URLWithString:@"https://graph.facebook.com"]; AFHTTPClient *client = [AFHTTPClient clientWithBaseURL:url]; // parameter NSDictionary *params = @{@"access_token": accessToken, @"message": message}; // image data NSData *imageData = UIImageJPEGRepresentation(self.imagePreview.image, 1); // create Request and upload the image NSMutableURLRequest *request = [client multipartFormRequestWithMethod:@"POST" path:[NSString stringWithFormat:@"/%@/photos/", [defaults stringForKey:@"fb_page_id"]] parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { [formData appendPartWithFileData:imageData name:@"source" fileName:accessToken mimeType:@"image/jpeg"]; }]; // publish! AFJSONRequestOperation *json = [AFJSONRequestOperation JSONRequestOperationWithRequest:request1 success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) { // IMAGE PUBLISHED!!! } failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) { // SOMETHING WRONG HAPPEN }]; [json start]; 

    }

不要问我为什么使用REST API,我使用他们的SDK进行了所有尝试,但始终失败。

我希望有人会发现它对这段代码有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM