forked from rongchao/epmet-cloud-rizhao
1 changed files with 78 additions and 0 deletions
@ -0,0 +1,78 @@ |
|||
package com.epmet.controller; |
|||
|
|||
import com.dingtalk.api.DefaultDingTalkClient; |
|||
import com.dingtalk.api.DingTalkClient; |
|||
import com.dingtalk.api.request.OapiGettokenRequest; |
|||
import com.dingtalk.api.request.OapiSnsGetuserinfoBycodeRequest; |
|||
import com.dingtalk.api.request.OapiUserGetbyunionidRequest; |
|||
import com.dingtalk.api.request.OapiV2UserGetRequest; |
|||
import com.dingtalk.api.response.OapiGettokenResponse; |
|||
import com.dingtalk.api.response.OapiSnsGetuserinfoBycodeResponse; |
|||
import com.dingtalk.api.response.OapiUserGetbyunionidResponse; |
|||
import com.dingtalk.api.response.OapiV2UserGetResponse; |
|||
import com.taobao.api.ApiException; |
|||
import org.springframework.web.bind.annotation.RequestMapping; |
|||
import org.springframework.web.bind.annotation.RequestMethod; |
|||
import org.springframework.web.bind.annotation.RequestParam; |
|||
import org.springframework.web.bind.annotation.RestController; |
|||
|
|||
/** |
|||
* 免登第三方网站 |
|||
* |
|||
* @author openapi@dingtalk |
|||
*/ |
|||
@RestController("dingtalk") |
|||
public class DingdingLoginController { |
|||
|
|||
/** |
|||
* 获取授权用户的个人信息 openapi@dingtalk |
|||
* |
|||
* @return |
|||
* @throws Exception ServiceResult<Map<String,Object>> 2020-11-4 |
|||
*/ |
|||
@RequestMapping(value = "/getUserInfo", method = RequestMethod.GET) |
|||
public String getDdScan(@RequestParam("code") String code) throws Exception { |
|||
// 获取access_token,注意正式代码要有异常流处理
|
|||
String access_token = this.getToken(); |
|||
|
|||
// 通过临时授权码获取授权用户的个人信息
|
|||
DefaultDingTalkClient client2 = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode"); |
|||
OapiSnsGetuserinfoBycodeRequest reqBycodeRequest = new OapiSnsGetuserinfoBycodeRequest(); |
|||
|
|||
reqBycodeRequest.setTmpAuthCode(code); |
|||
OapiSnsGetuserinfoBycodeResponse bycodeResponse = client2.execute(reqBycodeRequest, "yourAppId", "yourAppSecret"); |
|||
|
|||
// 根据unionid获取userid
|
|||
String unionid = bycodeResponse.getUserInfo().getUnionid(); |
|||
DingTalkClient clientDingTalkClient = new DefaultDingTalkClient("https://oapi.dingtalk.com/topapi/user/getbyunionid"); |
|||
OapiUserGetbyunionidRequest reqGetbyunionidRequest = new OapiUserGetbyunionidRequest(); |
|||
reqGetbyunionidRequest.setUnionid(unionid); |
|||
OapiUserGetbyunionidResponse oapiUserGetbyunionidResponse = clientDingTalkClient.execute(reqGetbyunionidRequest, access_token); |
|||
|
|||
// 根据userId获取用户信息
|
|||
String userid = oapiUserGetbyunionidResponse.getResult().getUserid(); |
|||
DingTalkClient clientDingTalkClient2 = new DefaultDingTalkClient( |
|||
"https://oapi.dingtalk.com/topapi/v2/user/get"); |
|||
OapiV2UserGetRequest reqGetRequest = new OapiV2UserGetRequest(); |
|||
reqGetRequest.setUserid(userid); |
|||
reqGetRequest.setLang("zh_CN"); |
|||
OapiV2UserGetResponse rspGetResponse = clientDingTalkClient2.execute(reqGetRequest, access_token); |
|||
System.out.println(rspGetResponse.getBody()); |
|||
return rspGetResponse.getBody(); |
|||
} |
|||
private String getToken() throws RuntimeException { |
|||
try { |
|||
DefaultDingTalkClient client = new DefaultDingTalkClient("https://oapi.dingtalk.com/gettoken"); |
|||
OapiGettokenRequest request = new OapiGettokenRequest(); |
|||
|
|||
request.setAppkey("dingiopfbtn8mktfoaf0"); |
|||
request.setAppsecret("RcmHIoP5KFLZSM5wzpYhvCKMMKEzLoWPtqu3OqOEBD6myg4IT8oVw4AwvRkKYKJz"); |
|||
request.setHttpMethod("GET"); |
|||
OapiGettokenResponse response = client.execute(request); |
|||
return response.getAccessToken(); |
|||
} catch (ApiException e) { |
|||
throw new RuntimeException(); |
|||
} |
|||
|
|||
} |
|||
} |
Loading…
Reference in new issue