1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- package com.nosum.common.constant;
- import cn.hutool.http.Header;
- import cn.hutool.http.HttpRequest;
- import com.nosum.common.util.HttpClientUtils;
- import com.nosum.common.util.JsonUtil;
- import com.nosum.deliver.auth.domain.vo.AuthUserVO;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Optional;
- public class GithubOauth {
- private static final String CLIENT_ID = "62315a189a3efded767b";
- private static final String CLIENT_SECRET = "c0348e4697552e1dcce200d43ab21984bf2e9973";
- private static final String AUTH_URL = "https://github.com/login/oauth/authorize";
- private static final String TOKEN_URL = "https://github.com/login/oauth/access_token";
- private static final String USER_INFO_URL = "https://api.github.com/user";
- public static String getAuthUrl() {
- return AUTH_URL + "?state=c2NvcGU9bm9zdW1ibG9n&client_id=" + CLIENT_ID;
- }
- public static String getAccessToken(String code) {
- Map<String, Object> params = new HashMap<>();
- params.put("code", code);
- params.put("client_id", CLIENT_ID);
- params.put("client_secret", CLIENT_SECRET);
- HttpRequest post = HttpRequest.post(TOKEN_URL);
- post.body(JsonUtil.toJsonString(params)).contentType("application/json").header(Header.ACCEPT, "application/json");
- return post.execute().body();
- }
- public static String getHtml(Object result) {
- // vue前端获取这个数据,去登录。
- return "<head><meta charset=\"UTF-8\"></head>" +
- "<body><p style=\"text-align: center;\"><h3>欢迎访问青涩知夏博客,登录中,请稍后......</h3></p></body>" +
- "\n <script type=\"text/javascript\">\n" +
- " window.onload=function () {\n" +
- " var message =" + JsonUtil.toJsonString(result) + ";\n" +
- " window.opener.parent.postMessage(message, '*');\n" +
- " parent.window.close();\n" +
- " }</script>";
- }
- public static String getErrorHtml() {
- return getHtml("error");
- }
- public static AuthUserVO getUserInfo(String code) {
- Optional<String> optional = Optional.ofNullable(code);
- if (optional.isPresent()) {
- Map<String, String> accessTokenMap = JsonUtil.parseHashMap(getAccessToken(optional.get()));
- String userinfo_url = USER_INFO_URL + "?access_token=" + accessTokenMap.get("access_token"); //通过token获得用户信息
- Map<String, String> resultMap = JsonUtil.parseHashMap(HttpClientUtils.doGet(userinfo_url));
- AuthUserVO authUserVO = new AuthUserVO();
- authUserVO.setSocialId(String.valueOf(resultMap.get("id")));
- authUserVO.setAvatar(resultMap.get("avatar_url"));
- authUserVO.setName(resultMap.get("login"));
- return authUserVO;
- }
- return null;
- }
- }
|