4

これについてはすでにたくさんの質問があることは知っていますが、GraphAPIを介して投稿されているFacebookのウォール投稿に改行を追加したいと思います。を使用することを提案するさまざまな回答を見てきましたが、それは私にはうまくいきません。投稿に<center></center>''を出力するだけです。<center></center>

具体的には、Rubyとコアラの宝石を使用しています。ユーザーのページに投稿しようとしています。リンクとして投稿し、投稿の説明でセンターハックを試してみると、期待どおりに機能しますが、実際に必要なメッセージでは機能しません。

更新::no_encodingオプションを設定できるようにするパッチをコアラgemに送信しました。このパッチが受け入れられた場合、そのオプションがtrueに設定されていれば、改行が可能になります。今のところ、この問題を抱えている人は私の宝石のフォークをつかむことができます:https ://github.com/ideaoforder/koala

好奇心旺盛な人にとって、問題はファラデーにありました。リクエストメソッドは:url_encodeに設定され、パラメータをurlエンコードされたフォームデータとして送信します。パラメータは、フォームデータではなく、通常のデータとして送信する必要があります(cURLで-fフラグの代わりに-dフラグを使用するなど)。これは、エンコードされたパラメータではなく、クエリ文字列の一部としてデータを送信することで実現します。

4

2 に答える 2

4

Facebookが実際に投稿で受け入れるものは時々変わるようで、十分に文書化されていません。それを踏まえて、次のリクエストを行うことで、メッセージに改行のあるウォールポストを作成することができました。

POST https://graph.facebook.com/me/feed?access_token=<token>&message=line+1%0D%0Aline+2

私の壁に次の投稿を作成します。

1
行目2行目

重要なのは、何がどこでURLエンコードされているかを知ることです。message私のAPIリクエストのパラメータに%0D%0Aは、のエスケープシーケンスに相当するが含まれています\r\nここを参照)。\r\n使用しているコアラの宝石が入力をURLエンコードしている場合は、エスケープコードを含む文字列を渡すだけで十分です。

更新:コマンドラインプログラムを使用して手動で投稿を作成してみると便利な場合があります。curlこのコマンドで動作させることができるかどうかを確認してください。

curl 'https://graph.facebook.com/<wall id>?access_token=<access_token>' -d 'message=this+is+line+1%0D%0Athis+is+line+2'

いつものように、ウォールIDとアクセストークンのパラメーターを独自のものに置き換えます(Rubyプログラムaccess_tokenにFacebookから取得したものを出力させます)。出力としてJSONの文字列が表示されます。

{"id":"wallid_postid"}

wallidpostidは数字です。代わりにエラーが発生した場合は、Facebookまたはアプリケーションに権限の問題がある可能性があります。

権限:アプリは、そのページとしてmanage_pages投稿する場合、そのページの管理者からの権限を持っている必要があります。また、アプリが権限を要求していない限り、ユーザーはリクエストが行われたときにアプリとFacebookに現在ログインしている必要があります。。ユーザーがログインしていない場合は、次の応答が表示されます。offline_access

{"error": {
    "type":"GraphMethodException",
    "message":"Unsupported post request."
}}
于 2011-08-19T21:25:48.627 に答える
2

また、ステータスの改行にもしばらく苦労しました。ステータスに改行を挿入するのに苦労するのではなく、メモを使用すると、このアプローチでも自分の欲求を満たすことができれば、非常に柔軟になることがわかりました。Facebook ページは、独自のメモを持つこともできます。アカウントまたはページの URL に ?sk=notes を追加するだけで、Facebook の Notes アプリケーションが表示されます。

于 2012-10-30T12:24:06.607 に答える