私は自分のウェブサイトをFacebookConnectと統合しました。認証/シングルサインオンは、すべてうまく機能しています。
今、私はユーザーの壁に何かを投稿しようとしていますが、これにはいくつかの問題があります。
まず、「古い」JavaScript API(FeatureLoader.js)を使用しています。
これらは、以下を使用するGraphAPIURLのimです。
private const string UserDetails_Url = @"https://graph.facebook.com/{0}?access_token={1}";
private const string Feed_Url = @"https://graph.facebook.com/{0}/feed?access_token={1}";
private const string TokenExchange_Url = @"https://graph.facebook.com/oauth/access_token?{0}";
URLを使用して、TokenExchange_Url
通話を行うための一意のユーザーOAuthトークンを受け取ります。
これは正常に機能しています。これは、a)トークンを受け取り、b)Graph API(つまりUserDetails_Url
)にHTTP Getリクエストを発行でき、正常に機能するためです。
ただし、を使用してユーザーのウォールに投稿することはできませんFeed_Url
。
問題は、壁に投稿するための適切なユーザー権限(つまり、Facebook側の設定)を持っていないことだと確信しています。
fbPublish
これで、クライアント側でAPIメソッドを使用してこれを実行できることに気付きましたが、 GraphAPIを使用してサーバー側で実行したいと思います。
Graph APIを呼び出してユーザーのウォールに投稿しようとするコードを、非常に簡単なものとして表示する必要はありません(HttpWebRequest、メソッドを「POST」に設定、コンテンツタイプ/長さを設定、バイトをStreamに書き込むなど)。
問題は、ユーザーがアプリケーションの「publish_stream」拡張権限を付与する必要があることだと思います。
Facebook Graph API docoは、承認リクエストでこれを行うように指示しています。
https://graph.facebook.com/oauth/authorize?
client_id=...&
redirect_uri=http://www.example.com/callback&
scope=user_photos,user_videos,publish_stream
次のURLを使用してOAuthトークンを取得しているため、混乱します。
https://graph.facebook.com/oauth/access_token?bunchofqsparams
間違ったトークン交換URLを使用していますか?同じ情報を取得しているように見える2つの異なるURLがあるのはなぜですか?
はい-私はFacebookAPIdocoを(何度も)読んだことがあります。はい、他の同様のSOの質問を読んだことがありますが、それらはすべてクライアント側APIを使用してウォールに公開することになります。サーバー側で実行したいと思います。
実際の「FacebookConnect」ボタンには、標準のFBMLを使用しています。
<fb:login-button length="long" size="medium" autologoutlink="false" background="light" onlogin="facebookLogin('/login')" class=" fb_login_not_logged_in FB_login_button FB_ElementReady"><a id="RES_ID_fb_login" class="fbconnect_login_button"><img id="RES_ID_fb_login_image" src="http://static.ak.fbcdn.net/rsrc.php/zB6N8/hash/4li2k73z.gif" alt="Connect"></a></fb:login-button>
これをクリックすると(Facebookにログインしていない場合)、ユーザーがログインできるウィンドウがポップアップ表示されます。ただし、[拡張アクセス許可の要求]ダイアログはありません。または、手動でトリガーする必要がある別のポップアップですか?
要約すると、ここに私の質問があります:
- ユーザーのウォールに公開するための拡張アクセス許可を付与するにはどうすればよいですか?
- OAuthトークンを取得するための正しいURLは何ですか?
- サーバー側のGraphAPI呼び出しを使用してユーザーのウォールに投稿する方法を示すための決定的なソースはありますか?