我浏览了FBSDK Sharing documentation here,但我无法找到一个简单的示例,人们可以使用FBShareDialog将简单的消息发布到时间轴(不是链接,而不是照片,而不是视频)。 我知道我可以运行一个基本上执行此操作的Web请求:
POST graph.facebook.com/me/feed?
message="My new post message!"&
access_token={your-access-token}
如图API API文档中所述,但同样 - 我想使用ShareDialog来获得一致的UI。
我该怎么办?谢谢。
答案 0 :(得分:2)
我发布到facebook并通过上面的代码反应原生0.43,但我改变了postRequestParams
const postRequestParams = {
message: {
string: 'Hello World!'
}
}
以下是我的全部。
const FBSDK = require('react-native-fbsdk');
const {
GraphRequest,
GraphRequestManager,
AccessToken
} = FBSDK;
class PostScreen extends React.Component {
postToFacebook = () => {
AccessToken.getCurrentAccessToken().then(
(data) => {
let tempAccesstoken = data.accessToken;
const _responseInfoCallback = (error, result) => {
console.log(result);
}
const postRequestParams = {
message: {
string: "Hello world!"
}
}
const postRequestConfig = {
httpMethod: "POST",
version: "v2.9",
parameters: postRequestParams,
accessToken: tempAccesstoken
}
console.log(postRequestConfig);
const infoRequest = new GraphRequest(
"/me/feed",
postRequestConfig,
_responseInfoCallback,
);
console.log("infoRequest");
console.log(infoRequest);
new GraphRequestManager().addRequest(infoRequest).start();
});
}
}
答案 1 :(得分:1)
注意:所有用户小写“帖子”指的是发布到用户墙的行为。所有大写的“POST”都是指HTTP请求方法。
Facebook官方反应原生SDK位于https://developers.facebook.com/docs/react-native/
注意有三个不同的组成部分:
前两个是自解释的,网站上提供了示例。
Graph API是将数据输入和输出Facebook的主要方式 社交图。它是一个用于查询的基于HTTP的低级API 数据,发布新故事,上传照片和各种其他任务 应用可能需要这样做。
Facebook Graph API只是一个REST API,它允许您通过HTTP方法(GET,POST,DELETE等)与fb数据进行交互。 react-native-fbsdk只是在它上面的层,这使得更容易做出这些请求。
发布到用户时间有两个先决条件。
获得这些后,您可以使用react native GRAPH API发布消息。
但首先让我们看一下如何使用HTTP而不是RN-SDK来实现这一目的:
https://developers.facebook.com/docs/graph-api/reference/v2.7/user/feed
POST /v2.7/me/feed HTTP/1.1
Host: graph.facebook.com
message=This+is+a+test+message
根据这一点,我们需要向位置 /v2.7/me/feed 发出POST请求,并将消息定义为参数。
最后回答您的问题如何使用react native sdk()发布到用户时间轴。让我们看一下rnsdk文档:https://developers.facebook.com/docs/react-native/graph-api
好像我们需要两个对象GraphRequest
(创建请求)和GraphRequestManager
(发送请求)
const FBSDK = require('react-native-fbsdk');
const {
FBGraphRequest,
FBGraphRequestManager,
} = FBSDK;
由于没有提供如何使用这两个对象发布到用户墙的示例,我们需要查看源代码:
https://github.com/facebook/react-native-fbsdk/blob/master/js/FBGraphRequest.js
我们可以从构造函数中看到它有三个参数:
/**
* Constructs a new Graph API request.
*/
constructor(
graphPath: string,
config: ?GraphRequestConfig,
callback: ?GraphRequestCallback,
)
我们知道Graph API文档中的graphPath = "/me/feed"
。回调只是返回请求时调用的函数。这给我们留下了配置对象,它在源中定义为:
type GraphRequestConfig = {
/**
* The httpMethod to use for the request, for example "GET" or "POST".
*/
httpMethod?: string,
/**
* The Graph API version to use (e.g., "v2.0")
*/
version?: string,
/**
* The request parameters.
*/
parameters?: GraphRequestParameters,
/**
* The access token used by the request.
*/
accessToken?: string
};
所以我们的配置对象看起来像这样:
const postRequestParams = {
fields: {
message: 'Hello World!'
}
}
const postRequestConfig = {
httpMethod: 'POST',
version: 'v2.7',
parameters: postRequestParams,
accessToken: token.toString() //pre-obtained access token
}
完全放弃:
const FBSDK = require('react-native-fbsdk');
const {
FBGraphRequest,
FBGraphRequestManager,
} = FBSDK;
_responseInfoCallback(error: ?Object, result: ?Object) {
if (error) {
alert('Error fetching data: ' + error.toString());
} else {
alert('Success fetching data: ' + result.toString());
}
}
const postRequestParams = {
fields: {
message: 'Hello World!'
}
}
const postRequestConfig = {
httpMethod: 'POST',
version: 'v2.7',
parameters: postRequestParams,
accessToken: token.toString()
}
const infoRequest = new GraphRequest(
'/me/feed',
postRequestConfig,
this._responseInfoCallback,
);
new FBGraphRequestManager().addRequest(infoRequest).start();