python 钉钉获取用户/部门接口

2020-04-26  本文已影响0人  路破格
#-*- coding=utf-8 -*-
#-*- encoding:utf-8 -*-

import sys
import json
import requests
import traceback

default_encoding = "utf-8"
if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)

def access_url(request_url):
    rs = requests.get(url = request_url, timeout = 15)
    result = False

    if rs.status_code == 200:
        result = rs.json()

    rs.close()
    return result

def get_token():
    # 以下2个参数需要修改
    appkey = "{yourkey}"
    appsecret = "{yoursecret}"
    request_url = "https://oapi.dingtalk.com/gettoken?appkey=%s&appsecret=%s" % (appkey, appsecret)
    return access_url(request_url)['access_token']
    
def get_dingtalk_departments(token):
    """
      获取钉钉部门信息
    """
    request_url = "https://oapi.dingtalk.com/department/list?access_token=%s&id=1" % token
    rs = access_url(request_url)
    deps = {}
    
    if rs['errcode'] == 0:
        for dep in rs_api['department']:
            deps[dep['id']] = deps['name']

    return deps

def get_dingtalk_users(token):
    """
      获取钉钉用户信息
    """
    deps = get_dingtalk_departments(token)
    users = {}

    for dep_id, dep_name in deps.items():
        request_url = "https://oapi.dingtalk.com/user/listbypage?access_token=%s&department_id=%d&offset=0&size=100" % (token, dep_id)
        rs = access_url(request_url)

        if rs['errcode'] == 0:
            for user in rs_api['userlist']:
                userid = user['userid']
                users[userid] = userid
                users[userid]['username'] = user['name']
                email = ""

                if 'orgEmail' in i and i['orgEmail'].find("@") != -1:
                    email = i['orgEmail']
                elif 'email' in i and i['email'].find("@") != -1:
                    email = i['email']

                users[userid]['email'] = email
                users[userid]['dep'] = dep_name

        print(json.dumps(users, indent = 2), ensure_ascii = False)

if __name__ == "__main__":
    try:
        token = get_token()
        get_dingtalk_users(token)
    except Exception as e:
        traceback.print_exc()
上一篇 下一篇

猜你喜欢

热点阅读