• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-12 13:36:29 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我在将照片从 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"OST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

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

        }];
    }

}];

以上代码以管理员身份成功发布到facebook页面。由于我需要发布照片,所以我需要将 grap 路径更改为/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:@"OST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

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

}];

以上代码已成功发布,但未以管理员身份发布。尽管我正在使用页面的访问 token 。

我以为 fb_page_id/photos 路径坏了,所以我尝试使用 fb_page_id/feed 并发送其他字段,例如链接、图片等。但是,它仍然以用户而不是页面管理员的身份发布。

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

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

提前谢谢你。



Best Answer-推荐答案


我终于找到了答案。以防万一有人遇到同样的问题,这就是我正在做的事情。

  1. 您需要通过访问 /page_id?fields=access_token

    获得主页的 access_token

    [FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@?fields=access_token", FB_PAGE_ID] completionHandler:^(FBRequestConnection *connection, id result, 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. 获取Page的access_token后,需要使用REST API发布图片。这里我用的是AFNetworking,手动上传图片。

    if ([result valueForKey:@"access_token"] != nil) { NSString *accessToken = [result 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:@"OST" 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 尝试了一切,但总是失败。

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

关于iphone - 以管理员身份将图片发布到 Facebook 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18224038/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap