All Downloads are FREE. Search and download functionalities are using the official Maven repository.

mtons.oauth2.provider.DoubanProvider Maven / Gradle / Ivy

package mtons.oauth2.provider;

import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;
import mtons.oauth2.OauthUser;

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

/**
 * Created by langhsu on 2017/9/5.
 */
public class DoubanProvider extends AbstractOauth2Provider {
    public DoubanProvider (){

    }

    public String createAuthorizeUrl(String state) {
        StringBuilder urlBuilder = new StringBuilder("https://www.douban.com/service/auth2/auth?");
        urlBuilder.append("response_type=code");
        urlBuilder.append("&client_id=" + getClientId());
        urlBuilder.append("&redirect_uri=" + getRedirectUri());
        urlBuilder.append("&state=" + state);
        return urlBuilder.toString();
    }

    public OauthUser getUser(String code) {
        Map params = new HashMap<>();
        params.put("grant_type", "authorization_code");
        params.put("client_id", getClientId());
        params.put("client_secret", getClientSecret());
        params.put("redirect_uri", getRedirectUri());
        params.put("code", code);

        String url = "https://www.douban.com/service/auth2/token";
        String httpString = httpPost(url, params);

        if (StringUtils.isBlank(httpString)) {
            return null;
        }

        JSONObject json = JSONObject.parseObject(httpString);
        String accessToken = json.getString("access_token");

        url = "https://api.douban.com/v2/user/~me";
        Map headers = new HashMap<>();
        params.put("Authorization", "Bearer " + accessToken);

        httpString = httpGetWithHeaders(url, headers);
        json = JSONObject.parseObject(httpString);

        OauthUser user = new OauthUser();
        user.setAccessToken(accessToken);
        user.setAvatar(json.getString("avatar"));
        user.setNickname(json.getString("name"));
        user.setOpenId(json.getString("id"));
        user.setGender(genders.get(json.getString("gender")));

        return user;
    }

    static Map genders = new HashMap();

    static {
        genders.put("m", "male");
        genders.put("f", "female");
        genders.put("n", "unkown");
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy