4

我已经实现了通过其 MessageDialog API 向 facebook messenger 发送链接 + 内容的例程。我设法让链接内容出现在消息对话框中,但发送按钮被禁用。我认为这更多的是配置问题。

我已经在 xamarin 本机 ios 中使用最新的 xamarin facebook sdk (v 4.15.1) 实现了这一点,并且我正在使用 sdk 10.0 进行编译。

这是一个非常基本的实现:

public bool SendMessageViaMessenger(string Text, string Link) {
    var content = new ShareLinkContent();
    content.SetContentUrl(new NSUrl(Link));
    content.ContentTitle = "Here is an invite";
    content.ContentDescription = "Test description";

    MessageDialog.Show(content, null);
    return true;
}

这是我的 Info.plist facebook 配置部分:

<key>CFBundleURLTypes</key>
<array>
  <dict>
    <key>CFBundleURLSchemes</key>
    <array>
      <string>fb{my-fb-app-id}</string>
    </array>
  </dict>
</array>
<key>FacebookAppID</key>
<string>{my-fb-app-id}</string>
<key>FacebookDisplayName</key>
<string>{my-fb-app-name}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
  <string>whatsapp</string>
  <string>fbapi</string>
  <string>fb-messenger-api</string>
  <string>fbauth2</string>
  <string>fbshareextension</string>
</array>

其中 {my-fb-app-id} 替换为我的 Facebook 应用 ID,{my-fb-app-name} 替换为应用名称。

我也有:

  1. 检查我的包标识符是否与我放入 facebook 应用程序配置的字符串完全相同;

  2. 在 facebook 应用程序配置中添加了我作为应用程序域发送的链接的域;

  3. 添加了我作为网站平台发送的链接的域;

  4. 通过以下代码将我的应用程序的应用程序委托与来自 facebook 的应用程序委托集成:

    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        global::Xamarin.Forms.Forms.Init();
        LoadApplication(new App());
    
        Facebook.CoreKit.ApplicationDelegate.SharedInstance.FinishedLaunching(app, options);
        return base.FinishedLaunching(app, options);
    }
    

任何帮助,将不胜感激。谢谢!

4

1 回答 1

3

所以,facebook 实际上只是阻止了我的 URL。其他网址一切正常。

在对 MessageDialog API 进行了一些深入的实验之后,我们发现 facebook 期望共享的 url 以 HTTP 200 状态返回正确的 HTML 内容结果。我分享的网址实际上是返回 302 状态,将用户重定向到错误页面。因此,该行为不被 facebook 接受为可共享的内容。

这种行为确实有点道理。欺骗我的是,如果我通过 Android Intent 共享相同的内容,Facebook 就可以了。

无论如何,现在一切正常。

希望这可以帮助任何有同样问题的人!

干杯!

于 2016-10-19T22:02:02.227 回答