我正在编写一个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在帖子中发送给我的签名JSON?我相信这也包含来自用户的访问令牌(假设他们已经授权了我的应用程序),如下所述:
https://developers.facebook.com/docs/samples/canvas/ (参见"signed_request参数“一节)。
对于Java、PHP、Javascript和Python,有许多示例,但我找不到任何一个在Play 2或使用RestFB中描述如何做到这一点的示例。我尝试了许多不同的方法,但无法解决如何访问实战2中的签名请求。
有谁可以帮助和解释如何做到这一点?
发布于 2012-11-14 05:44:27
如果令牌在POST请求中作为Json发送,您可以通过
def handle_post() = Action { implicit request =>
val jsonBody = request.body.asJson
//process it
}
https://stackoverflow.com/questions/13351276
复制相似问题