Package com.appspot.plucial.controller.account.facebook

Source Code of com.appspot.plucial.controller.account.facebook.AddFacebookAccountController

package com.appspot.plucial.controller.account.facebook;

import java.util.HashMap;
import java.util.Map;
import java.util.Random;

import org.slim3.controller.Navigation;

import com.appspot.plucial.Constants;
import com.appspot.plucial.controller.account.BaseController;
import com.appspot.plucial.model.UserModel;
import com.appspot.plucial.service.UserService;
import com.google.appengine.api.datastore.Text;

import facebook4j.Facebook;
import facebook4j.RawAPIResponse;
import facebook4j.User;
import facebook4j.auth.AccessToken;

public class AddFacebookAccountController extends BaseController {

    @Override
    protected Navigation execute(UserModel loginUserModel) throws Exception {

        Facebook facebook = sessionScope("facebook");
        String oauthCode = asString("code");

        System.out.println("oauthCode: " + oauthCode);

        try {
            // アクセストークンの取得
            AccessToken accessToken = facebook.getOAuthAccessToken(oauthCode);
            String tokenString = accessToken.getToken();

            // アクセスを2ヶ月有効トークンに変更
            Map<String, String> params = new HashMap<String, String>();
            params.put("client_id", Constants.FACEBOOK_APP_API_KEY);
            params.put("client_secret", Constants.FACEBOOK_APP_API_SECRET);
            params.put("grant_type", "fb_exchange_token");
            params.put("fb_exchange_token", tokenString);

            RawAPIResponse apiResponse = facebook.callGetAPI("/oauth/access_token", params);
            String response = apiResponse.asString();
            AccessToken newAccessToken = new AccessToken(response);
            String newToken = newAccessToken.getToken();

            if(newToken != null) {
                User facebookUser = facebook.getMe();

                loginUserModel.setFacebookAccessToken(new Text(newToken));
                loginUserModel.setFacebookAccountName(facebookUser.getName());

                // ユーザーグループを変更
                if(loginUserModel.getGroup() < 10) {
                    Random rnd = new Random();
                    loginUserModel.setGroup(rnd.nextInt(10) + 10);
                }

                UserService.put(loginUserModel);
            }


        } catch (Exception e) {
            redirect("/account/setting");
        }


        return redirect("/account/setting");

    }

    @Override
    protected String setPageTitle() {
        return null;
    }

    @Override
    protected String setPageDescription() {
        return null;
    }
}
TOP

Related Classes of com.appspot.plucial.controller.account.facebook.AddFacebookAccountController

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.