使用Play 2.0.1和RestFB访问签名的Facebook JSON



我正在编写一个Play 2.0.1应用程序,该应用程序将部署在Facebook的画布页面中。我将restFB用于Facebook API。

通过在手动创建访问令牌https://developers.facebook.com/tools/explorer?method=GET我可以让我的应用程序访问Facebook用户名,并在Facebook上的画布页面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的例子,但我在Play 2中或使用RestFB找不到任何描述如何做到这一点的例子。我尝试了许多不同的方法,但无法在Play 2中找到如何访问签名请求的方法。

有人能帮忙解释一下如何做到这一点吗?

如果令牌在POST请求中以Json的形式发送,则可以通过获取它

def handle_post() = Action { implicit request =>
val jsonBody = request.body.asJson
//process it
}

最新更新