Home > Java | Web > Play FrameworkでOAuth認証利用 その2:Facebook

Play FrameworkでOAuth認証利用 その2:Facebook

  • 2011-12-19 (月) 0:56
  • Java | Web

 前回の続き。
 今度は、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:

  1. Play FrameworkでOAuth認証利用 その1:Twitter
  2. Play framework
  3. CSVFileReader
  4. JavaからSqliteを使ってみる
  5. MiniMediaPlayer

Comments:0

Comment Form
Remember personal info

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

Home > Java | Web > Play FrameworkでOAuth認証利用 その2:Facebook

Google Analyticator

119
Unique
Visitors
Powered By Google Analytics

Return to page top