-
-
Notifications
You must be signed in to change notification settings - Fork 279
docker 环境 配置钉钉同步 ,但ldap 中并未同步到用户 #59
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Comments
目前后端拉下来的代码是超过前端的,还有一个动态关联字段需要配置,否则无法同步成功。 |
明白了 |
刚重新下载拉取了DOCKER 镜像, 测试了下,钉钉用户没有同步到。 |
字段关联关系是否已配置,然后同步的报错是什么,通过页面检查看下错误信息 |
通过浏览器右键检查同步接口返回内容 |
你本地有没有可调试的golang环境,有的话,我给你一段代码,你可以调试下你当前的配置信息是否能正常获取钉钉里边的数据信息 |
通过如下代码可以获取分组与用户: package main
import (
"fmt"
"github.com/zhaoyunxing92/dingtalk/v2"
dingreq "github.com/zhaoyunxing92/dingtalk/v2/request"
)
const (
// dingding
DingTalkAppKey = "xxxxxx"
DingTalkAppSecret = "xxxxxxxxxx"
)
func DingClient() *dingtalk.DingTalk {
client, err := dingtalk.NewClient(DingTalkAppKey, DingTalkAppSecret)
if err != nil {
fmt.Printf("init dingding client failed, err:%v\n", err)
}
return client
}
func main() {
groups, err := GetDept()
if err != nil {
fmt.Printf("get all group failed: %v\n", err)
}
for _, group := range groups {
fmt.Println("分组信息:", group)
}
users, err := GetUser()
if err != nil {
fmt.Printf("get all user failed: %v\n", err)
}
for _, user := range users {
fmt.Println("分组信息:", user)
}
}
func GetDept() (result []*DingTalkDept, err error) {
rsp, err := DingClient().FetchDeptList(1, true, "zh_CN")
if err != nil {
fmt.Printf("get dept failed:%v\n", err)
}
for _, rs := range rsp.Dept {
result = append(result, &DingTalkDept{
Id: rs.Id,
Name: rs.Name,
Remark: rs.Name,
ParentId: rs.ParentId,
})
}
return
}
func GetUser() ([]*DeptDetailUserInfo, error) {
depts, err := GetDept()
if err != nil {
return nil, err
}
var users []*DeptDetailUserInfo
for _, dept := range depts {
r := dingreq.DeptDetailUserInfo{
DeptId: dept.Id,
Cursor: 0,
Size: 1,
Language: "zh_CN",
}
for {
rsp, err := DingClient().GetDeptDetailUserInfo(&r)
if err != nil {
return nil, err
}
for _, user := range rsp.Page.List {
users = append(users, &DeptDetailUserInfo{
UserId: user.UserId,
UnionId: user.UnionId,
Name: user.Name,
Avatar: user.Avatar,
StateCode: user.StateCode,
ManagerUserId: user.ManagerUserId,
Mobile: user.Mobile,
HideMobile: user.HideMobile,
Telephone: user.Telephone,
JobNumber: user.JobNumber,
Title: user.Title,
WorkPlace: user.WorkPlace,
Remark: user.Remark,
LoginId: user.LoginId,
DeptIds: user.DeptIds,
DeptOrder: user.DeptOrder,
Extension: user.Extension,
HiredDate: user.HiredDate,
Active: user.Active,
Admin: user.Admin,
Boss: user.Boss,
ExclusiveAccount: user.ExclusiveAccount,
Leader: user.Leader,
ExclusiveAccountType: user.ExclusiveAccountType,
OrgEmail: user.OrgEmail,
Email: user.Email,
})
}
if !rsp.Page.HasMore {
break
}
r.Cursor = rsp.Page.NextCursor
}
}
return users, nil
}
type DingTalkDept struct {
Id int `json:"dept_id"`
Name string `json:"name"`
Remark string `json:"remark"`
ParentId int `json:"parent_id"`
}
type DeptDetailUserInfo struct {
UserId string `json:"userid"`
// 员工在当前开发者企业账号范围内的唯一标识
UnionId string `json:"unionid"`
// 员工名称
Name string `json:"name"`
// 头像
Avatar string `json:"avatar"`
// 国际电话区号
StateCode string `json:"state_code"`
// 员工的直属主管
ManagerUserId string `json:"manager_userid"`
// 手机号码
Mobile string `json:"mobile"`
// 是否号码隐藏
HideMobile bool `json:"hide_mobile"`
// 分机号
Telephone string `json:"telephone"`
// 员工工号
JobNumber string `json:"job_number"`
// 职位
Title string `json:"title"`
// 办公地点
WorkPlace string `json:"work_place"`
// 备注
Remark string `json:"remark"`
// 专属帐号登录名
LoginId string `json:"loginId"`
// 所属部门ID列表
DeptIds []int `json:"dept_id_list"`
// 员工在部门中的排序
DeptOrder int `json:"dept_order"`
// 员工在对应的部门中的排序
Extension string `json:"extension"`
// 入职时间
HiredDate int `json:"hired_date"`
// 是否激活了钉钉
Active bool `json:"active"`
//是否为企业的管理员:
//
//true:是
//
//false:不是
Admin bool `json:"admin"`
// 是否为企业的老板
Boss bool `json:"boss"`
// 是否专属帐号
ExclusiveAccount bool `json:"exclusive_account"`
// 是否是部门的主管
Leader bool `json:"leader"`
//专属帐号类型:
//
//sso:企业自建专属帐号
//
//dingtalk:钉钉自建专属帐号
ExclusiveAccountType string `json:"exclusive_account_type"`
//员工的企业邮箱
//
//如果员工的企业邮箱没有开通,返回信息中不包含该数据
OrgEmail string `json:"org_email"`
//员工邮箱
//
//企业内部应用如果没有返回该字段,需要检查当前应用通讯录权限中邮箱等个人信息权限是否开启
//
//员工信息面板中有邮箱字段值才返回该字段
//
//第三方企业应用不返回该参数
Email string `json:"email"`
} 创建一个目录dingding,然后执行如下命令:
|
你现在配置文件是直接在docker容器内部更改的吗,另外前后端镜像都有更新,建议你先把本地的删除,然后拉取最新的latest版本的镜像。 我估计是你更改的dingding配置信息没有作用到后端应用当中。 可以说下你的操作步骤 |
你看下我跟隔壁这位兄弟的对话,你俩是一样的情况: #63 |
改成IP 后,后台登陆不了了。。 |
不是要强行改IP,需要根据你的情况更改 让你看聊天的核心点在于配置是否有挂载到容器内部。 这些需要你自己仔细核查。 |
谢谢。问题解新局面。可以关ISSUES |
正确的方案,你已摸透了这里边的门道,恭喜。后边如果在公司里用起来了,麻烦在这里帮忙做个登记: #18 |
docker 环境 配置钉钉同步
但但后台,ldap 中并未同步到用户
该如何排查。
The text was updated successfully, but these errors were encountered: