簡體   English   中英

Facebook iOS SDK-發布自定義故事

[英]Facebook iOS SDK - Post Custom Story

我正在嘗試做一些似乎比必要的困難大一個數量級的事情。

我有一個針對Parse后端編寫的iOS應用。 我們應用程序的用戶可以創建要存儲的項目,有時他們可以為這些項目生成警報。

我想向用戶發布一個簡單的提醒到Facebook。

我已經在Facebook網站上閱讀了很多有關將Facebook集成到iOS的信息,但是他們的文檔令人困惑,並且我在StackOverflow上看到不止一個人提到他們的iOS代碼至少有時存在缺陷。

基本上,自定義故事將包括以下各項:

  1. 故事標題
  2. 故事說明(此處通常不是很多文字)
  3. 一張或多張圖片(我願意支付1張,但我希望能夠發布多張照片)
  4. 如果可能,提供用戶提供的GPS位置。

我首先要承認我是一名出於工作目的而學習Facebook的開發人員,而我遠非Facebook的專家。

當我在Facebook應用程序中玩耍時,我可以添加狀態更新,其中包括:

  1. 文本
  2. 圖片)
  3. 我在做什么
  4. 我在哪里(或某個位置)

但是,在Facebook SDK中,似乎只有以下兩個選項可用於發布狀態更新:

startForPostStatusUpdate:completionHandler:
startForPostStatusUpdate:place:tags:completionHandler:

如果我在那兒缺少什么,請告訴我。

其次,我試圖遵循Facebook的文檔和示例代碼來執行以下事件序列:

  1. 上載和登台圖像資源
  2. 創建一個對象(在我的應用中,我注冊了一個“警報”對象)
  3. 創建一個動作(在我的應用中,我已經注冊了一個“發布”動作)

這是我從Facebook網站拼湊而成的代碼(評論大部分來自其他人的代碼,而不是我自己的代碼):

- (void)postToFacebookWithAlert:(PFObject *)alert image:(UIImage *)image {        
    // Stage the image
    [FBRequestConnection startForUploadStagingResourceWithImage:image completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
        if (error != nil) {
            // See: https://developers.facebook.com/docs/ios/errors                
        } else {
            // Package image inside a dictionary, inside an array like we'll need it for the object
            NSArray *image              = @[@{@"url": [result objectForKey:@"uri"], @"user_generated" : @"true" }];
            // Create an object
            NSString *caption           = // user-generate content
            NSMutableDictionary<FBOpenGraphObject> *alert;
            alert                       = [FBGraphObject openGraphObjectForPostWithType:@"<myapp>:alert"
                                                                                  title:caption
                                                                                  image:image
                                                                                    url:nil
                                                                            description:alert[@"subtitle"]];
            alert.provisionedForPost    = YES;

            // Post custom object
            [FBRequestConnection startForPostOpenGraphObject:alert completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                if (error != nil) {
                    // An error occurred                        
                } else {
                    NSMutableDictionary<FBGraphObject> *post    = [FBGraphObject graphObject];
                    post[@"alert"]                              = result[@"id"];
                    [FBRequestConnection startForPostWithGraphPath:@"me/<myapp>:post" graphObject:post completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
                        NSLog(@"startForPostWithGraphPath:graphObject:completionHandler:");
                        if (error != nil) {
                            // An error occurred
                            NSLog(@"Encountered an error posting to Open Graph: %@", error);                                
                        } else {
                            NSLog(@"OG story posted, story id: %@", result[@"id"]);                                
                        }
                    }];
                }
            }];
        }
    }];        
}

我實際上已經使這段代碼可以工作一次。 我以自己的個人Facebook帳戶登錄。 如果我轉到活動日志,則可以看到要發布的項目。 如果我查看照片,可以看到我嘗試上傳的照片。 如果我從妻子的應用程序/帳戶查看我的個人資料,它不會顯示。

有人有可以執行我想要的工作代碼嗎?

也許您需要將“ fb:explicitly_shared”設置為“ true”,Facebook應該對此進行審查。

通過審核后,您可以添加如下所示的選項。

[post setObject:@"true" forKey:@"fb:explicitly_shared"];

暫無
暫無

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

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