前回の続き。
今度は、Facebookアカウントによる認証を実装します。
→ サンプルページ
3.Facebook
FacebookアカウントによるOAuth認証を実装します。
FacebookのOAuth認証は、Playの配布物にサンプルプロジェクトが含まれているので、まあ、簡単に実装できました。
FacebookのOAuth認証は、Callback URLがlocalhostでは動かないので、ネット上に環境がある方が良いかもしれません。
1)アプリケーションの登録
Facebookのアプリページで、アプリケーションを登録しました。
2)FacebookAuth.javaの実装
Facebookのコードもほぼサンプル通りです。Twitterと違い、OAuth2.0用のクラス群を利用します。
package controllers;
import java.util.HashMap;
import java.util.Map;
import models.User;
import play.Logger;
import play.libs.OAuth2;
import play.libs.WS;
import play.mvc.Before;
import play.mvc.Controller;
import com.google.gson.JsonObject;
public class FacebookAuth extends Controller {
public static OAuth2 FACEBOOK = new OAuth2(
"https://graph.facebook.com/oauth/authorize",
"https://graph.facebook.com/oauth/access_token",
"**********************",
"************************"
);
public static void authenticate() {
if (OAuth2.isCodeResponse()) {
User u = connected();
OAuth2.Response response = FACEBOOK.retrieveAccessToken(authURL());
u.token = response.accessToken;
u.save();
Application.index();
}
FACEBOOK.retrieveVerificationCode(authURL());
}
static String authURL() {
return play.mvc.Router.getFullUrl("FacebookAuth.authenticate");
}
static User connected() {
return (User)renderArgs.get("user");
}
@Before
static void setuser() {
User user = null;
if (session.contains("uid")) {
Logger.info("existing user: " + session.get("uid"));
user = User.get(Long.parseLong(session.get("uid")));
}
if (user == null) {
user = User.createNew();
session.put("uid", user.uid);
}
renderArgs.put("user", user);
}
public static Map<String,String> getUserInfo(){
Map<String,String> ret=new HashMap<String,String>();
User u = connected();
JsonObject me = null;
if (u != null && u.token!=null){
me = WS.url("https://graph.facebook.com/me?access_token=%s",
WS.encode(u.token)).get().getJson().getAsJsonObject();
ret.put("auth", "facebook");
String name=me.get("name").toString();
name=name.replace("\"","");
String id=me.get("id").toString();
id=id.replace("\"","");
ret.put("name",name);
ret.put("screenname",name);
ret.put("imageurl","https://graph.facebook.com/"+id+"/picture");
}
return ret;
}
}
Related posts:
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://termat.sakura.ne.jp/java/play-framework%e3%81%a7oauth%e8%aa%8d%e8%a8%bc%e5%88%a9%e7%94%a8%e3%80%80%e3%81%9d%e3%81%ae2%ef%bc%9afacebook/trackback/?_wpnonce=40869cea3d
- Listed below are links to weblogs that reference
- Play FrameworkでOAuth認証利用 その2:Facebook from TM's Workspace
