iphone - sdk是什麼 - ios套件識別碼



使用Facebook iOS SDK在用戶牆上發布照片 (4)

使用Facebook SDK 3.0:

 - (void)postPhotoThenOpenGraphAction {
    FBRequestConnection *connection = [[FBRequestConnection alloc] init];

    // First request uploads the photo.
    FBRequest *request1 = [FBRequest 
        requestForUploadPhoto:self.selectedPhoto];
    [connection addRequest:request1
        completionHandler:
        ^(FBRequestConnection *connection, id result, NSError *error) {
            if (!error) {
            }
        }
            batchEntryName:@"photopost"
    ];

    // Second request retrieves photo information for just-created 
    // photo so we can grab its source.
    FBRequest *request2 = [FBRequest 
        requestForGraphPath:@"{result=photopost:$.id}"];
    [connection addRequest:request2
         completionHandler:
        ^(FBRequestConnection *connection, id result, NSError *error) {
            if (!error &&
                result) {
                NSString *source = [result objectForKey:@"source"];
                [self postOpenGraphActionWithPhotoURL:source];
            }
        }
    ];

    [connection start];
}

他們使用OpenGraph動作發布( [self postOpenGraphActionWithPhotoURL:source]; )來關注這篇文章,但是如果你只想在用戶的牆上放置圖像,那麼你就不需要了。

更多信息: https://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/publish-open-graph-story/#step7https://developers.facebook.com/docs/tutorials/ios-sdk-tutorial/publish-open-graph-story/#step7

Yay !, FB SDK 3.0搖滾! 沒有更多AppDelegate.facebook :)

https://src-bin.com

我正在嘗試將照片從相機上傳到用戶的Facebook牆。 我不完全確定正確的策略是什麼,但是通過閱讀它似乎要做的事情是將照片上傳到相冊,然後有人在牆上張貼指向該相冊/照片的鏈接。 理想情況下,這將涉及對話,但從我可以說,這是不可能的。

我已經設法將照片上傳到相冊,然後取回該照片的ID,但我不確定在那之後該怎麼做。

任何人都可以提供一些直接的代碼來實現這一目標嗎?

獎金問題:是否可以將照片發佈到應用程序牆(或者代替)?

編輯:圖API是首選,但在此階段工作的任何東西都是好的。


Answer #1

您希望做的更清楚 - 將照片發佈到FB,並保證帖子在用戶的牆/流上發布。

不幸的是,有一些事情在路上。

FB Graph API似乎只允許您將圖片發佈到相冊,或直接發佈到牆上,鏈接到網絡上已存在的圖片。 在第一種情況下,可能會在流中創建一個帖子,但FB似乎以某種方式合併多個帖子,以防止用戶的流被轟炸。 在我能看到的任何地方都沒有記錄這種機制。

在第二種情況下,您可能會認為您可以通過發佈到相冊,然後明確地發佈到相冊的鏈接。 您可以將參數添加到原始相冊帖子“no_story”中,其值為1,並在您準備製作明確的帖子時抑制可能發布的牆貼。 但是,FB暫時不會為新發布的圖像提供源URL,而且,它似乎不喜歡包含其自己的內容傳送網絡的URL,從而返回錯誤。 您可能會想到簡單地將狀態更新放在流中,談論帖子,但是,圖譜API也限制為每個應用每天25個這樣的直接饋送帖子,以防止發送垃圾郵件。

一種解決方案是發佈到Flickr之類的​​東西,獲取圖像的URL,然後發佈到牆上。 FB的首選解決方案似乎是使用屬於移動工具包的FB對話框 - 實際上很少有像OAuth屏幕那樣的網頁。

就個人而言,我打算只是簡單地發佈到上面的專輯,並與FB的想法如何通知用戶。 好奇你如何選擇繼續。


Answer #2

我分三步完成了這個

1張圖片到相冊(返回imageID)

2使用imageID為imageID請求元數據

3使用“鏈接”字段(不是“源”字段)作為鏈接到用戶牆上的帖子中的圖像

缺點是牆上有兩個帖子,一個用於圖像,一個用於實際帖子。 我還沒有想出如何將照片發佈到相冊中,而且還沒有出現牆貼(理想情況下它只是出現的第2個帖子)

步驟1:

- (void) postImageToFacebook {

    appDelegate = (ScorecardAppDelegate *)[[UIApplication sharedApplication] delegate];

    currentAPICall = kAPIGraphUserPhotosPost;

    UIImage *imgSource = {insert your image here};
    NSString *strMessage = @"This is the photo caption";
    NSMutableDictionary* photosParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                         imgSource,@"source",
                                         strMessage,@"message",
                                         nil];

    [appDelegate.facebook requestWithGraphPath:@"me/photos"
                                     andParams:photosParams
                                 andHttpMethod:@"POST"
                                   andDelegate:self];     

    // after image is posted, get URL for image and then start feed dialog
    // this is done from FBRequestDelegate method
}

第2步(kAPIGraphUserPhotosPost)和第3步(kAPIGraphPhotoData):

- (void)request:(FBRequest *)request didLoad:(id)result {

    if ([result isKindOfClass:[NSArray class]] && ([result count] > 0)) {
        result = [result objectAtIndex:0];
    }

    switch (currentAPICall) {
        case kAPIGraphPhotoData: // step 3
        {
            // Facebook doesn't allow linking to images on fbcdn.net.  So for now use default thumb stored on Picasa
            NSString *thumbURL = kDefaultThumbURL;
            NSString *imageLink = [NSString stringWithFormat:[result objectForKey:@"link"]];    

            currentAPICall = kDialogFeedUser;
            appDelegate = (ScorecardAppDelegate *)[[UIApplication sharedApplication] delegate];


            NSMutableDictionary* dialogParams = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                     kAppId, @"app_id",
                                     imageLink, @"link",
                                     thumbURL, @"picture",
                                     @"Just Played Wizard etc etc", @"name",
                                     nil];

            [appDelegate.facebook dialog:@"feed" 
                               andParams:dialogParams 
                             andDelegate:self];


            break;
        }
        case kAPIGraphUserPhotosPost: // step 2
        {

            NSString *imageID = [NSString stringWithFormat:[result objectForKey:@"id"]];            
            NSLog(@"id of uploaded screen image %@",imageID);

            currentAPICall = kAPIGraphPhotoData;
            appDelegate = (Scorecard4AppDelegate *)[[UIApplication sharedApplication] delegate];

            [appDelegate.facebook requestWithGraphPath:imageID
                                           andDelegate:self];
            break;
        }
    }
}

我修改了代碼,只顯示了濃縮的Facebook內容。 如果你想檢查帖子是否成功,你會想要這樣的東西:

- (void)dialogDidComplete:(FBDialog *)dialog {
    switch (currentAPICall) {
        case kDialogFeedUser:
        {
            NSLog(@"Feed published successfully.");
            break;
        }
    }
}

Facebook帖子中的藍色文本是您在步驟3中的“名稱”參數中添加的任何內容。點擊Facebook中的藍色文本將帶您進入步驟1中發布的照片​​,在Facebook的相冊中(Facebook創建默認相冊如果您沒有指定相冊,則為您的應用程序)。 在我的應用程序的情況下,它是記分卡的全尺寸圖像(但可以是任何圖像,例如來自相機)。 不幸的是,我無法找到一種方法使拇指圖像成為一個實時鏈接,但它不是非常易讀,所以默認拇指在我的情況下工作。 Facebook帖子(黑色字體)中標有“年度第一場比賽......”的部分由用戶輸入。






facebook