How to use OAuth 2 in Play Framework 2.0
java, playframework, scala
Solution
To answer your specific question, you can get request (query) parameters by calling:
Controller.request().queryString()
Getting OAuth2 is easy but not trivial. It helps to have a working sample. I would recommend downloading Play1, and looking up the sample for Facebook Authentication. And then porting the code over to Play2. I did the above and found the process very instructive. You will realize that each site and API has quirks/needs, so there is very little additional code that seems usable form one site to another.
A more step-by-step answer is that there are several steps. First, you need to get an `access_token` and then you can use it. To get an `access_token` you need to send the user to the sites authorization url, so far facebook this would be something like:
https://graph.facebook.com/oauth/authorize/?client_id=idFromFacebook&redirect_uri=http://yourdomain.com/auth
Once your user has accepted the authorization, the site will redirect the user with a code, something like `http://yourdomain.com/auth?code=XYZ_ABC`. You would then need to request from the sites access token url to get the access token. For Facebook this would be something like:
https://graph.facebook.com/oauth/access_token?client_id=idFromFacebook&client_secret=secredFromFacebook&code=XYZ_ABC&redirect_uri=...
The response from the above url would have the `access_token` in it.
Now, you can start using the access token to request information.
Problem
So I am using scribe to connect to Facebook (OAuth 2). However I am having trouble getting the authorization token. On Play's website they say that "Version 2 is simple enough to be implemented easily without library or helpers,". However, I'm not quite sure how to do this! I tried changing my routes file that would send the key to a built method. ``` GET /slivr_auth/*name controllers.Application.getKey(name) ``` However, the auth key contains a '?' in the url, so I can't capture it as a string. Any help or advice would be appreciated!