gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:41:13 25 4
gpt4 key购买 nike

作为页面管理员将照片从 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);

}];
}

}];

以上代码以管理员身份成功发布到 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:@"POST" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

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

}];

以上代码发布成功,但不是admin。尽管我正在使用页面的访问 token 。

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

如果我做错了请告诉我。

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

提前谢谢你。

最佳答案

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

  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. 获取页面的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:@"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 尝试了所有方法,但总是失败。

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com