钉钉内部应用免密登录

当开发的系统(H5页面)只是在钉钉客户端打开,但并不是一个钉钉应用时,系统可以自动获得正在访问用户的钉钉身份信息,而无需用户再次输入账户密码。

注意:此功能与企业应用/第三方企业应用无关,只能用于钉钉客户端内打开的网站,并且不是钉钉内的应用免登,此流程只能做到获取到用户身份。

获取appId及appSecret

点击进入钉钉开发者平台 的页面,点击左侧菜单的【移动接入应用-登录然后点击右上角的【创建扫码登录应用授权】,创建用于免登过程中验证身份的appId及appSecret,创建后即可看到appId和appSecret。

image.png

需提交字段

说明

名称

授权微应用的名称,必填

描述

说明扫码登录使用的场景,必填

授权页面LOGO地址

会显示在授权页面的中间页中,以http或https开头,必填

回调域名

微应用回调的URL,以http或https开头,必填

构造要跳转的链接

构造如下跳转链接,此链接处理成功后,会重定向跳转到指定的redirect_uri并向url追加临时授权码code及state两个参数

https://oapi.dingtalk.com/connect/oauth2/sns_authorize?appid=APPID&response_type=code&scope=snsapi_auth&state=STATE&redirect_uri=REDIRECT_URI

参数

说明

appid

参看第1步获取,代表了你提供的服务,必填

redirect_uri

重定向地址(需要urlencode编码),该地址所在域名需要配置为appid对应的安全域名,必填

state

用于防止重放攻击,开发者可以根据此信息来判断redirect_uri只能执行一次来避免重放攻击, 选填

response_type

固定值为code必填

scope

取值为snsapi_auth,必填snsapi_auth用于钉钉容器内获取用户授权

服务端通过临时授权码获取授权用户的个人信息

通过临时授权码Code获取用户信息,临时授权码只能使用一次。

请求方式:POST(HTTPS)

请求地址https://oapi.dingtalk.com/sns/getuserinfo_bycode?accessKey=xxx&timestamp=xxx&signature=xxx

请求包结构体

{
    "tmp_auth_code": "23152698ea18304da4d0ce1xxxxx"
}

URL签名参数说明:

参数

说明

accessKey

应用的appId

timestamp

当前时间戳,单位是毫秒

signature

通过appSecret计算出来的签名值,签名计算方法

参数说明

参数

类型

必须

说明

tmp_auth_code

String

用户授权的临时授权码code,只能使用一次;在前面步骤中跳转到redirect_uri时会追加code参数

SDK请求示例(JAVA)

DefaultDingTalkClient  client = new DefaultDingTalkClient("https://oapi.dingtalk.com/sns/getuserinfo_bycode");
OapiSnsGetuserinfoBycodeRequest req = new OapiSnsGetuserinfoBycodeRequest();
req.setTmpAuthCode("4a2c5695b78738d495f47b5fee9160cd");
OapiSnsGetuserinfoBycodeResponse response = client.execute(req,"yourAppId","yourAppSecret");

SDK请求示例(PHP):

include "TopSdk.php";
$c = new DingTalkClient(DingTalkConstant::$CALL_TYPE_OAPI, DingTalkConstant::$METHOD_POST , DingTalkConstant::$FORMAT_JSON);
$req = new OapiSnsGetuserinfoBycodeRequest;
$req->setTmpAuthCode("4a2c5695b78738d495f47b5fee9160cd");
$resp=$c->executeWithAccessKey($req, "https://oapi.dingtalk.com/sns/getuserinfo_bycode","yourAppId","yourAppSecret");
var_dump($resp)

返回结果

{ 
    "errcode": 0,
    "errmsg": "ok",
    "user_info": {
        "nick": "张三",
        "openid": "liSii8KCxxxxx",
        "unionid": "7Huu46kk"
    }
}

参数

说明

errcode返回码
errmsg对返回码的文本描述内容

user_info

└ nick

用户在钉钉上面的昵称

└ openid

用户在当前开放应用内的唯一标识

└ unionid

用户在当前开放应用所属企业的唯一标识

根据unionid获取userid

如果开发者需要通过unionid获取到userid,可参考《根据unionid获取userid》

注意,接口调用需要使用AccessToken,可参考《获取access_token》

根据userid获取用户信息

如果开发者希望获取用户更多信息,比如部门信息、邮箱等,可以调用服务端API-通讯录管理-用户管理-“获取用户详情”接口获取,可参考《获取用户详情》

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
要在Vue中实现钉钉免密登录获取用户信息,你可以按照以下步骤进行操作: 1. 引用中的代码示例,首先在Vue组件中引入钉钉的JSAPI库,并定义一个函数`dingding_no_login`来处理钉钉免登录的逻辑。 2. 使用`dd.ready`方法来确保钉钉环境准备就绪后,调用`dd.runtime.permission.requestAuthCode`方法获取免登授权码。在`onSuccess`回调中,可以通过`info.code`获取到免登授权码。 3. 将免登授权码发送给后端接口进行验证,并获取用户信息。可以使用`await`关键字来等待后端接口返回结果。 4. 在获取到用户信息后,可以进行相应的跳转或保存用户信息的操作。 以下是一个示例代码,展示了如何在Vue中实现钉钉免密登录获取用户信息: ```javascript import * as dd from 'dingtalk-jsapi' export default { methods: { async dingding_no_login() { if (dd.env.platform != 'notInDingTalk') { dd.ready(async () => { dd.runtime.permission.requestAuthCode({ corpId: "企业id", onSuccess: async (info) => { const res = await dingdingNoLogin({ code: info.code }) // 进行跳转或保存token的操作 } }); }); } } }, mounted() { this.dingding_no_login(); } } ``` 注意替换代码中的"企业id"为你的实际企业id。同时,你需要根据实际需求进行相应的跳转或保存用户信息的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [前端vue 钉钉内部使用公司内部系统免登录 微应用免登录](https://blog.csdn.net/weixin_64064327/article/details/125711817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [钉钉 基于vue开发h5微应用,免登录获取用户信息](https://blog.csdn.net/weixin_40079913/article/details/120198601)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

只晓梧桐听雨眠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值