钉钉内部应用免密登录 |
您所在的位置:网站首页 › 钉钉的用户名和密码 › 钉钉内部应用免密登录 |
当开发的系统(H5页面)只是在钉钉客户端打开,但并不是一个钉钉应用时,系统可以自动获得正在访问用户的钉钉身份信息,而无需用户再次输入账户密码。 注意:此功能与企业应用/第三方企业应用无关,只能用于钉钉客户端内打开的网站,并且不是钉钉内的应用免登,此流程只能做到获取到用户身份。 获取appId及appSecret点击进入钉钉开发者平台 的页面,点击左侧菜单的【移动接入应用-登录】,然后点击右上角的【创建扫码登录应用授权】,创建用于免登过程中验证身份的appId及appSecret,创建后即可看到appId和appSecret。 需提交字段 说明 名称 授权微应用的名称,必填 描述 说明扫码登录使用的场景,必填 授权页面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×tamp=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-通讯录管理-用户管理-“获取用户详情”接口获取,可参考《获取用户详情》。 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |