2

RestFBでJavaTomcatを使用してFacebookアプリケーションを作成しようとしています。

restfbのドキュメントには、次のことが示されています。

私は間違った指示を見ているかもしれないと思います、そしてこれはfacebookconnectまたはapps.facebook.com/app_name内の実際のfacebookアプリケーション以外のもののためのものです。

この問題に関する関連情報をいただければ幸いです。ユーザーの名前を出力する簡単なFacebookアプリケーションを作成しようとしています。

一般に、ユーザーのアクセストークンを取得した後、次のことができます。

FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN);
User user = facebookClient.fetchObject("me", User.class);
out.println("User name: " + user.getName());

私の問題は、ユーザーのアクセストークンを適切に取得するにはどうすればよいですか?投稿の上部に表示された情報では、2つのリクエストを行う必要があることが示されています。1つ目はコード用で、もう1つはアクセストークン用です。また、アクセストークンのリクエストにより、アプリの秘密鍵が実際にユーザーに公開されます。これは、ユーザーを別のページに転送するたびに、ユーザーがgetパラメーターとsetパラメーターを簡単に表示できるためです。

だから私はここでかなり迷っていると思います。

助けてください!:)

ありがとう

コメント後に更新

これらの手順では、ユーザーのページをリダイレクトするために2回必要です。最初にコードを取得し、次にアクセストークンを取得します。ユーザーはこれらの2つのリダイレクトを確認できます。そのため、ユーザーはgetパラメーターからFacebookアプリケーションキーとシークレットキーを簡単に確認できます。これらの手順がユーザーから隠されていることを確認するにはどうすればよいですか?

4

2 に答える 2

4

コメントで述べたように、これらは Facebook のグラフ API にアクセスするために必要な手順です。ただし、2番目の質問に答えるには:

「これらのステップがユーザーから隠されていることを確認するにはどうすればよいですか?」

ユーザーのブラウザは、最初のリクエストのみを実行する必要があります。目的は、Facebook がユーザーの Facebook ID を提供する唯一の承認であることを確認することです。作成しているアプリケーションに応じて、リダイレクト URL を使用して、指定したデフォルトのリダイレクト URL を指すか、Web サイトでトークンの取得に使用するカスタム URL を指定します。最初の方法は、通常、ブラウザーがリダイレクトを処理する方法を制御できるモバイル デバイスなどのスタンドアロン アプリケーションで使用されます。2 番目の方法は、カスタムの Web ベース アプリケーションに使用されます。アクセス トークンを受け取ったら、ブラウザ経由ではなく、コード内で (お気に入りの http API を使用して) 2 番目の操作を実行します。access_token url のリダイレクトは、authentication-url で指定されたリダイレクト url と比較されます。Facebook はこれを検証のみに使用し、リクエストが正常に完了した場合に実際のリダイレクトを実行しません。

大まかな手順は次のとおりです。

  1. 適切な redirect_uri を指定して、ユーザーのブラウザを authentication-url にリダイレクトします
  2. リダイレクトされたブラウザ リクエストから確認トークンを取得する
  3. お好みの HTTP フレームワークを使用して access_token の取得を実行します (ユーザー入力は必要ありません)。
  4. 結果を解析してアクセス トークンを取得する
  5. トークンを使用した初期の restfb と必要に応じて使用
于 2011-03-10T00:24:01.577 に答える
1

REST API は廃止されました。代わりに、JavaScript と Graph API を調べる必要があります。これに関する優れた記事がここにあります: http://ocpsoft.org/opensource/creating-a-facebook-app-setup-and-tool-installation/ (3 つの部分シリーズ、非常に詳細:)

于 2012-03-07T17:13:37.730 に答える