请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

诗仙·1957

高级会员

162

主题

396

帖子

1338

积分

高级会员

积分
1338
诗仙·1957
高级会员   /  发表于:2025-4-27 13:09  /   查看:168  /  回复:4
1金币
本帖最后由 诗仙·1957 于 2025-4-27 13:28 编辑




如图,钉钉正在逐步取消这个机制,不让创建,虽然目前也能创建,只不过创建的方式变成了极不方便那种,问了钉钉的技术员,回答说是推荐使用新版的方案:
实现登录第三方网站 - 钉钉开放平台

扫码插件要弹出一个窗口,根据这个文档发现可以把二维码直接初始化到页面(这点感觉比弹窗好),我做了以下研究




创建一个页面 设置权限为所有人,页面加载命令去初始化钉钉官方的js sdk,也就是


这个js文件,添加后,根据实例写了一个初始化。如果url没有code,则初始化二维码到页面指定的位置,如果url有code标识已经扫码后跳转的地址,相当于相同的页面被加载了2次。第一次显示二维码,第二次处理扫码逻辑。
根据文档的描述,第一步获取用户token,再获取用户个人信息,得到unionid 然后 调用接口:根据unionid获取用户userid  得到userid


如果当前应用的认证模式为第三方集成(钉钉),那么
那么接下来该干什么?才能实现让这个钉钉userid登录呢?

他不像单点登录----查询本地用户存在不存在,不存在创建--调用本地api  sso接口拼接----跳转到拼接后的地址=该用户登录。
第三方集成---??????这个逻辑是什么?



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

我解决了换var bendiusers = await dataContext.UserInfos.GetUserInfoAsync(userids.result.userid);//通过指定的用户名获取用户信息 解决了这个查本地系统账户问题,第三方认证也能查询到

4 个回复

倒序浏览
最佳答案
最佳答案
诗仙·1957
高级会员   /  发表于:2025-4-27 13:09:07
来自 4#
诗仙·1957 发表于 2025-4-28 15:00
var userName = dataContext.UserInfos.GetUserNameByExtendedProperty("UserName", userids.result.user ...

我解决了换var bendiusers = await dataContext.UserInfos.GetUserInfoAsync(userids.result.userid);//通过指定的用户名获取用户信息
解决了这个查本地系统账户问题,第三方认证也能查询到
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2025-4-27 16:31:03
2#
您好,看了钉钉的文档,和以前扫码登录不同在于,二维码生成用 JS 在前端调用生成。
扫描二维码后,会跳转到配置的应用的重定向地址,并携带 authCode。
然后我们需要做的,用 webapi 或者开发服务端命令插件。
获取 authCode,调用钉钉 API 用 code 换 token,用 token 获取用户信息。
获取到用户信息后,调用活字格内置 API,看这个用户在或者是否存在。然后调用内置 API 在服务端做登录。
回复 使用道具 举报
诗仙·1957
高级会员   /  发表于:2025-4-28 15:00:53
3#
Simon.Sun 发表于 2025-4-27 16:31
您好,看了钉钉的文档,和以前扫码登录不同在于,二维码生成用 JS 在前端调用生成。
扫描二维码后,会跳转 ...

var userName = dataContext.UserInfos.GetUserNameByExtendedProperty("UserName", userids.result.userid);// 根据钉钉用户的 unionid 从系统中获取对应的用户名
// 检查是否成功获取到用户名
if (!string.IsNullOrEmpty(userName))
{
............
}
else
{
    dataContext.Log.AppendLine("找不到指定的用户,或者你不是该企业的钉钉成员");
    dataContext.Log.AppendLine(JsonConvert.SerializeObject(userinfos));
    return new ExecuteResult() { ErrCode = 401, Message = $"登录失败:---unionid:{userinfos.unionid},userid:{userids.result.userid},本地userID:{userName}" };
}


页面显示:

后台情况


var userName = dataContext.UserInfos.GetUserNameByExtendedProperty("UserName", userids.result.userid);
这个匹配本地系统的userid找不到  该怎么办

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2025-4-28 16:04:46
5#

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部