簡體   English   中英

Facebook iOS SDK 4.2.0-共享自托管的Open Graph故事時出錯

[英]Facebook iOS SDK 4.2.0 - Error when sharing self-hosted Open Graph story

在過去的幾天里,我一直在為此苦苦掙扎,似乎找不到解決方案。

這是問題所在:我正嘗試從我的iOS應用發布“開放圖譜”故事,並讓Facebook抓取提供的網址以獲取其他“開放圖譜”標簽。 這在以前的SDK(3.x)中效果很好,但是對於我來說,我無法弄清為什么它無法在4.2.0下運行。

我得到的錯誤是這樣的:

在URL對象“:對象缺少必要的值http://samples.ogp.me/487842374583398類型的“routieapp:活動”是無效的,因為所需的財產“OG:標題”類型“字符串”的並沒有提供。

我已經包括了Facebook提供的Open Graph操作的示例OpenGraph頁面,目的只是為了查看問題是否出在包含標簽的實時網站中,但是很明顯,因為即使在其網站上也失敗了,事實並非如此。

您可以從示例網站的源中看到它確實包含所有“打開圖”標記:

<meta property="fb:app_id" content="202373013130337" />
<meta property="og:title" content="Sample Activity" />
<meta property="og:image" content="https://s-static.ak.fbcdn.net/images/devsite/attachment_blank.png" />
<meta property="og:url" content="http://samples.ogp.me/487842374583398" />
<meta property="og:type" content="routieapp:activity" />

這是我用來啟動共享的代碼:

FBSDKShareOpenGraphObject *object = [FBSDKShareOpenGraphObject objectWithProperties:@{@"og:url": @"http://samples.ogp.me/487842374583398", @"og:type": @"routieapp:activity"}];


FBSDKShareOpenGraphAction *action = [[FBSDKShareOpenGraphAction alloc] init];
action.actionType = @"routieapp:track";

[action setString:[GSDateFormatter ISO8601StringFromDate:[route.startLocation timestampAsDate]] forKey:@"start_time"];
[action setString:[GSDateFormatter ISO8601StringFromDate:[route.endLocation timestampAsDate]] forKey:@"end_time"];
NSTimeInterval duration = [[route.endLocation timestampAsDate] timeIntervalSinceDate:[route.startLocation timestampAsDate]];
[action setNumber:@(duration) forKey:@"activity_duration"];

[action setObject:object forKey:@"routieapp:track"];

FBSDKShareOpenGraphContent *content = [[FBSDKShareOpenGraphContent alloc] init];
content.action = action;
content.previewPropertyName = @"routieapp:track";

FBSDKShareAPI *shareObject = [[FBSDKShareAPI alloc] init];
shareObject.shareContent = content;
shareObject.message = route.name;
shareObject.delegate = self;
[shareObject share];

[FBSDKShareAPI shareWithContent:content delegate:self];

現在關於我的“開放圖”設置: 跟蹤是動作, 活動是對象。

任何想法如何解決這個問題? 我會很興奮! 因為我已經花了將近一個星期的時間來解決這個問題,但我的想法已經用完了。 您(Stack Overflow上的人)是我的最后希望! 提前非常感謝您。

解決了! :)

但是您不會相信問題出在哪里。 這行:

[action setNumber:@(duration) forKey:@"activity_duration"];

造成了這一切。 當涉及到動作時,沒有activity_duration參數。 可惜錯誤消息沒有更具描述性。

另外,如果您需要共享Open Graph對象,那么有比我在問題代碼中更好的方法了-您可以使用以下方法:

FBSDKShareOpenGraphAction *action = [FBSDKShareOpenGraphAction actionWithType:@"routieapp:track" objectURL:objectURL key:@"routieapp:activity"];

暫無
暫無

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

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