簡體   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