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!
OAuth 2.0 is not backwards compatible with OAuth 1.0 or 1.1, and should be thought of as a completely new protocol. OAuth 1.0 was largely based on two existing proprietary protocols: Flickr's authorization API and Google's AuthSub.
The OAuth 2.0 Playground is a tool for developers that simplifies experimentation with the OAuth 2.0 protocol and APIs. Trying out some requests in the OAuth 2.0 playground can help you understand how the protocol functions and make life easier when the time comes to use OAuth in your own code.
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.
I don't know if it might help, but I've created a Play 2.x client in Scala and Java which supports OAuth/CAS/OpenID/HTTP authentication and user profile retrieval : https://github.com/leleuj/play-pac4j.
For OAuth support, it's based on Scribe and supports Facebook, Twitter, Google, Yahoo, DropBox, Github, LinkedIn, Windows live, WordPress...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With