2012-06-13 43 views
0

我想使用Facebook SDK中的FBDialog,但它似乎只需要URL來張貼圖像。有沒有什麼辦法可以在發帖之前使用FBDialogUIImage上傳到Facebook,而無需將圖像上傳到另一臺服務器?目前我使用這個發佈在Facebook上的UIImage使用FBDialog上傳UIImage

NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           @"A caption", @"caption", 
           nil]; 
[_facebook requestWithMethodName:@"photos.upload" andParams:params andHttpMethod:@"POST" andDelegate:nil]; 

它的偉大工程,但我需要的FBDialog。有沒有辦法與FBDialog做同樣的事情?

任何幫助表示讚賞。

回答

2

不,要發佈UIImage您不能直接附加它。這裏有兩種方法:

  1. 太上傳到服務器,然後取一個URL /請求/查詢到該服務器
  2. (更實際的方法)上傳到您的Facebook用戶的相冊,然後張貼圖片

對於更深入的教程看看這個鏈接:

Official Facebook iOS Tutorial

This is a similar question with a great answer that provides step by step tutorial

+1

謝謝。我決定使用第二種方法。 「請求:(FBRequest *)請求didLoad:(id)result」的請求對象包含上傳圖片的ID。之後可以在FBDialog中發佈爲https://www.facebook.com/photo.php?fbid=THE_ID_HERE –

+0

嗯,我剛剛嘗試發佈此URL時收到錯誤。 「流中不允許使用FBCDN圖片」。事實證明,Facebook不允許將URL發佈到Facebook上託管的圖像上。 http://www.syndicatedmethods.com/SyndicatedBlogs/post/2010/06/22/FBCDN-image-is-not-allowed-in-stream-How-can-this-be.aspx –

+0

真的嗎?那麼,我會說等待iOS 6在10月份公開發布,並使用社交框架分享到Facebook,就像twitter API一樣。事實上,如果你是像我這樣的iOS開發者計劃的一部分,你可以得到一些幫助! – MCKapur

1
- (void) feedDialogButtonClicked { 
NSMutableDictionary *params = 
    [NSMutableDictionary dictionaryWithObjectsAndKeys: 
     @"Testing Feed Dialog", @"name", 
     @"Feed Dialogs are Awesome.", @"caption", 
     @"Check out how to use Facebook Dialogs.", @"description", 
     @"http://www.example.com/", @"link", 
     @"http://fbrell.com/f8.jpg", @"picture", 
     nil]; 
[facebook dialog:@"feed" 
     andParams:params 
     andDelegate:self]; 

}

從官方Facebook的iOS教程,張貼由羅漢

+0

問題是關於**上傳**圖片的設備沒有發佈圖片的鏈接。 – Zorayr

2

由於Facebook的iOS SDK v3.13的+,你可以presentShareDialogWithPhotoParams將圖像直接從設備上傳。請參閱下面的示例代碼:

FBShareDialogPhotoParams *photoParams = [FBShareDialogPhotoParams new]; 
UIImage *screenshot = //image you want to share. 
photoParams.photos = @[screenshot]; 
[FBDialogs presentShareDialogWithPhotoParams:photoParams 
           clientState:nil 
            handler:^(FBAppCall *call, NSDictionary *results, NSError *error) { 

            }];