首先:我会尝试发布尽可能多的截图和尽可能多的代码示例,以获得我们需要的帮助,谢谢!
问题
我们有一个照片移动应用,其设置允许用户在上传时自动自动将应用内照片分享到Facebook 。我们将这些照片称为时刻,实际分享工作正常。
应用程序名称链接(这些名为 attributions ?)是否已损坏。
在我们的FB应用程序Open Graph设置中,除了其他对象之外,我们还有一个名为moment
的对象,一个名为share
的动作,以及一个连接这两个对象的故事。
这是一个共享的时刻"看起来像FB:
它由我们的后端服务器共享,后端服务器基于PHP微框架 Lumen 。以下是相关的共享代码:
/**
* @param User $user
* @param Moment $moment
*/
public function shareMoment(User $user, Moment $moment)
{
$facebookAccount = $this->facebookMapper->getFacebookAccountInfo($user);
$fb = new Facebook(array('app_id' => $this->facebookAppId, 'app_secret' => $this->facebookAppSecret));
$postPayload = [
'moment' => UrlUtility::getMomentOpenGraphPageUrl($moment->getGuid()),
'fb:explicitly_shared' => true,
'image' => [
[
'url' => UrlUtility::getMomentWatermarkedImageFileUrl($moment),
'user_generated' => true
]
]
];
if ($moment->hasDescription()) {
$postPayload['message'] = $moment->getDescription();
}
try {
$postPath = 'me/' . $this->facebookAppNamespace . ':share';
$response = $fb->post($postPath, $postPayload, $facebookAccount->getAccessToken());
} catch (FacebookSDKException $e) {
...
return;
}
}
getMomentOpenGraphPageUrl(...)
方法为生成的包含moment
对象元数据的OG页面提供了一个URL。
问题很可能在于此OG页面及其元数据。
按上面屏幕截图中 1 所示的应用链接会产生以下结果:
按上面屏幕截图中 2 所示的第二个应用链接会产生以下结果:
要明确:
我们希望链接在安装后打开应用程序,或者转到应用程序/我们的FB应用程序页面。
在Android中,此行为似乎只是工作。它在Android中表现完美。这些链接打开了我们的应用程序iOS正在成为一场噩梦。
第二个链接不会像第一个链接那样中断,但它链接到moment
对象的OG URL,我们不 >想要。我们不希望FB应用中的任何点击转到这些链接,就像它们是一个网站一样。
我们只是希望在FB上分享照片,而我们的应用程序名称链接"充当应用程序打开链接。没有外部网站式的行为。
最后,我将向您展示我们的moment
OG页面生成的HTML,如上所述(显然,CAPITALIZED项目是我编辑的内容):
<html>
<head
prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# FBAPPNAME: http://ogp.me/ns/fb/FBAPPNAME#">
<title>APPNAME Moment</title>
<meta property="fb:app_id" content="FB_APP_ID"/>
<meta property="og:title" content=""/>
<!-- <meta property="og:determiner" content="a"/> -->
<meta property="og:description" content="A moment shared with APP NAME"/>
<meta property="og:image" content="https://SERVERURL.com/shared/moments/pO_8Lx3CkJY.jpg"/>
<meta property="og:url" content="https://SERVERURL.com/og/moment/pO_8Lx3CkJY"/>
<meta property="og:type" content="versetheapp:moment"/>
<!-- iOS FB meta tags -->
<meta property="al:ios:url" content="IOSSCHEME://moment/372"/>
<meta property="al:ios:app_store_id" content="APP_STORE_ID"/>
<meta property="al:ios:app_name" content="APP NAME"/>
<style>
body {
background-color: #2d2d2d;
}
.momentImage {
display: block;
margin-left: auto;
margin-right: auto;
}
</style>
</head>
<body>
<div id="momentContainer">
<img src="/moments/pO_8Lx3CkJY.jpg" class="momentImage"/>
</div>
</body>
</html>
在这里奄奄一息,已经有数周的时间来解决这个问题了,现在它已成为制作中一个令人尴尬的问题,现在我们允许人们将他们的新时刻分享给Facebook。
非常感谢任何帮助,谢谢! :)