Facebook iOS 消息对话框发送按钮已禁用

Facebook iOS Message Dialog Send Button Disabled

我已经实现了通过 MessageDialog API 向 facebook Messenger 发送 link + 内容的例程。我设法让 link 内容显示在消息对话框中,但发送按钮被禁用。我认为这更像是一个配置问题。

我已经在 xamarin native 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 应用程序配置中添加了 link 我作为应用程序域发送的域;

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

  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);
    }
    

如有任何帮助,我们将不胜感激。 谢谢!

所以,Facebook 实际上只是屏蔽了我的 URL。 与其他 urls 一切正常。

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

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

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

希望这对遇到同样问题的人有所帮助!

干杯!