如何使用react-native-fbsdk共享操作?

时间:2016-11-25 22:30:23

标签: react-native react-native-fbsdk

我们在反应应用程序的网络版本和我们原生的Android应用程序中执行此操作,因此我们的设置和一切正常。我正在尝试使用react-native-fbsdk在react-native中实现共享操作。我正在关注Android代码,因为它看起来最接近react-native-fbsdk代码。

我应该使用ShareApi.share还是别的什么?

我尝试创建ShareOpenGraphContent实例以与ShareApi.share一起使用,但是没有构造函数。

我希望他们能提供更全面的文件:s

基于我的同事在Android上用于ShareApi的代码,似乎react-native-fbsdk缺少与共享操作相关的一些内容。

不能直接从react-native-fbsdk导出

ShareOpenGraphContent ,所以这个

import { ShareOpenGraphContent } from 'react-native-fbsdk';

实际上不起作用。必须有一些方法可以在react-native-fbsdk中使用ShareApi来共享动作......我只是遗漏了一些东西。

有人帮忙......拜托。

谢谢!

1 个答案:

答案 0 :(得分:0)

我明白了!我不得不手动创建ShareOpenGraphContent对象的实例,该对象具有3个必需属性:contentType,action和previewPropertyName。 react-native-fbsdk目前没有此对象类型的构造函数。

ShareApi.canShare不是强制性的,但会在尝试共享之前进行检查以确保您拥有正确的权限。这样您就可以在尝试用户登记之前让用户登录,或者用户尚未同意所需的权限。

const ogAction = new ShareOpenGraphAction('<your_facebook_namespace>' + ':' + '<your_facebook_action>');
ogAction.putString('song', 'https://<url_to_your_song_app_etc>');
ogAction.putString('place', '<fbPlacePageID>'');
ogAction.putNumber('fb:explicitly_shared', 1); // Normally this is a boolean, but putNumber with a value of 1 works

// Manually create an instance of ShareOpenGraphContent (no constructor in the API)
const ogContent = {
  contentType: 'open-graph',
  action: ogAction,
  previewPropertyName: 'song',
};

ShareApi.canShare(ogContent).then((canShare) => {
  if (canShare)
    return ShareApi.share(ogContent, '/me');
}).then(
  function(result) {
    // Shared successfully
  },
  function(error) {
    // Failed to share
  }
);