7

我試圖通過Facebook的開放圖API與Facebook的iOS SDK 3.0實現像。 除了FbGraphObject之外,所有的東西都可以工作,這是因爲我不知道它應該如何顯示,因爲這顯然不起作用。Facebook iOS SDK 3.0,在url上執行類似操作?

我想要做的就是像一個URL發佈爲對象。一個簡單的像通過開放圖。

錯誤消息,我得到了下面的代碼是:

The action you're trying to publish is invalid because it does not specify any 
reference objects. At least one of the following properties must be specified: object. 

我使用的代碼是這樣的:

FBGraphObject *objectToLike = [[FBGraphObject alloc]initWithContentsOfURL:[NSURL URLWithString:facebookLike.titleLabel.text]]; 

    FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession] graphPath:@"me/og.likes" graphObject:objectToLike]; 

    FBRequestConnection *connection = [[FBRequestConnection alloc] init]; 
    [connection addRequest:requestLike 
     completionHandler: 
    ^(FBRequestConnection *connection, id result, NSError *error) { 
     if (!error && 
      result) { 

      DLog(@"NothingWentWrong"); 
     } 

     DLog(@"MajorError: %@", error); 

    } 
    ]; 

    [connection start]; 

UPDATE:

經過一些更多的信息和我猜它使用這種方法: https://developers.facebook.com/docs/sdk-reference/iossdk/3.0/class/FBGraphObject/#//api/name/graphObject

以某種方式創建一個對象。這是graphObject方法,我可能需要做些什麼。任何幫助都將不勝感激。

回答

6

我實際上已經設法創建一個簡單和相當髒的解決方案。 該解決方案看起來並不理想,但它目前是一個可行的解決方案。

如果有人使用了資源管理器工具在facebook上這個網址: https://developers.facebook.com/tools/explorer/

你知道URL會怎麼看時,Facebook是共享像等。它必須具有URL和訪問令牌。 所以我的解決方案變得只是無視發送Facebook SDK中的任何內容,只是發送一個post請求到我在explorer工具中使用的相同的URL。

似乎有一些參考它在Facebook的文檔,如果你仔細觀察和深刻的,但沒有人確切解釋如何真正進行連接,所以這是我的解決方案:

NSString *urlToLikeFor = facebookLike.titleLabel.text; 

NSString *theWholeUrl = [NSString stringWithFormat:@"https://graph.facebook.com/me/og.likes?object=%@&access_token=%@", urlToLikeFor, FBSession.activeSession.accessToken]; 
NSLog(@"TheWholeUrl: %@", theWholeUrl); 

NSURL *facebookUrl = [NSURL URLWithString:theWholeUrl]; 

NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:facebookUrl]; 
[req setHTTPMethod:@"POST"]; 

NSURLResponse *response; 
NSError *err; 
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err]; 
NSString *content = [NSString stringWithUTF8String:[responseData bytes]]; 

NSLog(@"responseData: %@", content); 

如果您看看我只需要url的代碼,並在url中放入兩個動態字符串,一個使用object-url,另一個使用訪問令牌。我創建一個URLRequest並將其設置爲一個POST請求,並且將來自Facebook的響應記錄下來,以便實際查看是否可以通過。

可能會對實際請求做一些性能改進,但如果您看到任何減速,我會保留給您。

我仍然對其他解決方案感興趣,但這是我現在要使用的解決方案。

+0

你能告訴我什麼是「urlToLikeFor」,它只是任何頁面的「id」或完整的url –

+0

想要的網頁的完整URL,這個網頁必須實現Facebook提供的meta-tags 。 –

+0

Thanx對於答覆...你的意思是這樣的http://stackoverflow.com/questions/9038025/facebook-object-debugger-property-ogurl-could-not-be-parsed-as-type-url –

0

我不確定initWithContentsOfURL做什麼,但從名字我猜它試圖實際加載給定網址(?)的內容。

您只需將URL作爲文本參數 - URL 什麼表示Open Graph對象。 Facebook將完成剩下的工作,抓取該網址後面的網頁並閱讀它的OG元標記等。

+0

通過url作爲文本參數你的意思是一個字符串?你能給我一些關於如何去做的指導嗎? –

+0

是的,沒有(因爲我沒有做任何iPhone開發的東西)。 – CBroe

+0

唯一的問題是FBGraphObject的實例似乎沒有以任何方式接受字符串。這裏的問題在於FBGraphObject在某種程度上是錯誤的,我無法讓我的字符串成爲對象。我很確定我已經實現了FBGraphObject錯誤。 –

0

也許只是這樣嗎?

FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession] 
    graphPath:@"me/og.likes" 
    graphObject:[NSURL URLWithString:facebookLike.titleLabel.text]]; 
+1

嘗試過,我不知何故必須實施協議FBOpenGraphAction,但我仍然不太清楚如何。 http://developers.facebook.com/docs/sdk-reference/iossdk/3.0/protocol/FBOpenGraphAction/ –

+0

我說的是它沒有工作。 –

相關問題