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