1

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で署名されたリクエストにアクセスする方法がわかりません。

誰かがこれを行う方法を助けて説明できますか?

4

1 に答える 1

0

トークンが POST リクエストで Json として送信された場合は、次の方法で取得できます。

def handle_post() = Action { implicit request =>
  val jsonBody = request.body.asJson
  //process it
}
于 2012-11-13T21:44:27.343 に答える