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

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

/*
+--------------------------------------------------------------------------
|   Mtons [#RELEASE_VERSION#]
|   ========================================
|   Copyright (c) 2014, 2015 mtons. All Rights Reserved
|   http://www.mtons.com
+---------------------------------------------------------------------------
*/
package mtons.oauth2.provider;

import com.alibaba.fastjson.JSONObject;
import mtons.oauth2.OauthUser;

/**
 * Created by langhsu on 2017/9/3.
 */
public class GithubProvider extends AbstractOauth2Provider {

    public GithubProvider (){

    }

    @Override
    public String createAuthorizeUrl(String state) {
        StringBuilder sb = new StringBuilder("https://github.com/login/oauth/authorize?");
        sb.append("scope=user");
        sb.append("&client_id=" + getClientId());
        sb.append("&redirect_uri=" + getRedirectUri());
        sb.append("&state=" + state);

        return sb.toString();
    }

    @Override
    public OauthUser getUser(String code) {
        String accessToken = getAccessToken(code);

        String url = "https://api.github.com/user?access_token=" + accessToken;

        String httpString = httpGet(url);
        JSONObject json = JSONObject.parseObject(httpString);

        OauthUser user = new OauthUser();
        user.setAccessToken(accessToken);
        user.setAvatar(json.getString("avatar_url"));
        user.setOpenId(json.getString("id"));
        user.setNickname(json.getString("login"));

        return user;
    }

    protected String getAccessToken(String code) {

        StringBuilder urlBuilder = new StringBuilder("https://github.com/login/oauth/access_token?");
        urlBuilder.append("client_id=" + getClientId());
        urlBuilder.append("&client_secret=" + getClientSecret());
        urlBuilder.append("&code=" + code);

        String url = urlBuilder.toString();

        String httpString = httpGet(url);
        JSONObject json = JSONObject.parseObject(httpString);
        return json.getString("access_token");
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy