Facebookのキャンバスページ内にデプロイされるPlay2.0.1アプリケーションを作成しています。FacebookAPIにrestFBを使用しています。
https://developers.facebook.com/tools/explorer?method=GETでアクセストークンを手動で作成することにより、アプリケーションでFacebookユーザーの名前にアクセスし、FacebookのCanvasページiFrameにレンダリングすることができます。
したがって、私のアプリコントローラーはPOSTを受信し、次のようなページをレンダリングします。
public static Result handle_fb_post() {
return redirect(routes.canvas.fb_render_profile_page());
}
public static Result fb_render_profile_page() {
String accessToken = "<access token copied from facebook graph explorer>";
DefaultFacebookClient().getExtendedAccessToken(application_id, application_secret);
FacebookClient facebookClient = new DefaultFacebookClient(accessToken);
User fbUser = facebookClient.fetchObject("me", com.restfb.types.User.class);
return ok(views.html.fbuser.render(fbUser));
}
私のルートは次のように設定されています:
POST /fbcanvas/ controllers.FBCanvas.handle_fb_post()
GET /fbcanvas/profile controllers.FBCanvas.fb_render_profile_page()
ただし、FacebookがPOSTで送信する署名付きJSONにアクセスするにはどうすればよいですか?ここで説明するように、これにはユーザーからのアクセストークンも含まれていると思います(ユーザーが私のアプリを承認したと仮定します)。
https://developers.facebook.com/docs/samples/canvas/(「signed_request パラメーター」のセクションを参照)。
Java、PHP、Javascript、Pythonの例はたくさんありますが、Play2またはRestFBを使用してこれを行う方法を説明している例は見つかりません。さまざまなアプローチを試しましたが、Play2で署名されたリクエストにアクセスする方法がわかりません。
誰かがこれを行う方法を助けて説明できますか?