注: すべてのユーザーの小文字の「投稿」は、ユーザーのウォールに投稿する行為を指します。すべて大文字の「POST」は、HTTP リクエスト メソッドを表します。
Facebookの公式反応ネイティブSDKはここにありますhttps://developers.facebook.com/docs/react-native/
3 つの異なるコンポーネントがあることに注意してください。
- ログイン
- 共有
- グラフ API。
最初の 2 つは自明であり、例はサイトで提供されています。
Graph API は、Facebook のソーシャル グラフにデータを出し入れするための主要な方法です。これは、データのクエリ、新しいストーリーの投稿、写真のアップロード、およびアプリが実行する必要があるその他のさまざまなタスクに使用される低レベルの HTTP ベースの API です。
Facebook Graph API は、HTTP メソッド (GET、POST、DELETE など) を介して fb データと対話できるようにする単なる REST API です。react-native-fbsdk はその上にレイヤーを重ねるだけで、これらのリクエストを簡単に行うことができます。
ユーザー時間への転記には 2 つの前提条件があります。
- fb アプリが正しくセットアップされていることを確認する: https://developers.facebook.com/apps/
- publish_actions 権限を持つユーザー アクセス トークンを取得すると、新しい投稿を公開できます。
これらを取得したら、react ネイティブ GRAPH API を使用してメッセージを投稿できます。
しかし、最初に、RN-SDK ではなく HTTP を使用して単純にこれを行う方法を見てみましょう。
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
(リクエストを送信するため) の2 つのオブジェクトが必要なようです。
const FBSDK = require('react-native-fbsdk');
const {
FBGraphRequest,
FBGraphRequestManager,
} = FBSDK;
これら 2 つのオブジェクトを使用してユーザー ウォールに投稿する方法の例が提供されていないため、ソース コードを調べる必要があります。
https://github.com/facebook/react-native-fbsdk/blob/master/js/FBGraphRequest.js
コンストラクターから、次の 3 つのパラメーターを受け取ることがわかります。
/**
* Constructs a new Graph API request.
*/
constructor(
graphPath: string,
config: ?GraphRequestConfig,
callback: ?GraphRequestCallback,
)
graphPath = "/me/feed"
Graph API のドキュメントからわかります。コールバックは、リクエストが返されたときに呼び出される単なる関数になります。これにより、ソースで次のように定義されている構成オブジェクトが残ります。
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
};
したがって、config オブジェクトは次のようになります。
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();