案例:如何生成带权限的token

注:目前saas版本不支持集成。

以公开环境为例

https://study.sf.163.com/documents/uploads/projects/FAQ/167c7202d08c7fb9.png

接口网址:https://netease.youdata.163.com/

接口后缀:api/dash/util/genToken

请求方式:post

提交内容:

{

"tokenType": "tokenKey",

"key": "个人token—key",

"openRp": true,

"resourcePermissions":[

{

"projectId": 项目id,

"resourceType": "NEW_REPORT",

"permissions": ["view"],

"resourceId":报告id

}

],

"filterMap":

{

"数据链接ID":[

{

"filterType": "listFilter",

"selectType": "select",

"database": "数据库名",

"tableName": "数据表名",

"filter":

{

"dim":

{

"field": "目的省",

"dataType": "String"

},

"select": ["吉林"]

}

}

]

}

}

个人token—key获取

https://study.sf.163.com/documents/uploads/projects/FAQ/167d097023bbd647.png

项目iD,报告ID获取

https://study.sf.163.com/documents/uploads/projects/FAQ/167d09db1d67fece.png

数据链接ID,数据表明,筛选字段,下属条件字段获取

https://study.sf.163.com/documents/uploads/projects/FAQ/202106/1686db318a6946aa.pnghttps://study.sf.163.com/documents/uploads/projects/FAQ/167d0a1489621eb1.png

示例:

import requests as re

import json

def get_token(host, post_json):

data = json.dumps(post_json)

headers = {

"content-type": "application/json; charset=UTF-8",

"user-agent": "Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Mobile Safari/537.36",

"x-requested-with": "XMLHttpRequest",

"accept": "text/plain, */*; q=0.01",

"accept-encoding": "gzip, deflate, br"

}

api_url = 'api/dash/util/genToken'

if "https://" in host:

url = host + api_url

else:

url = "https://" + host + api_url

back = json.loads(re.post(url=url, headers=headers, data=data).text)["result"]

return back

host = 'https://demo1.youdata.com/dash/folder/1?rid=80751'

post_json = {

"tokenType": "tokenKey",

"key": "16195899946238877320e89fdb6554f46a1a8",

"openRp": true,

"resourcePermissions": [

{

"projectId": 1,

"resourceType": "NEW_REPORT",

"permissions": ["view"],

"resourceId": 80751

}

],

"filterMap":

{

"47": [

{

"filterType": "listFilter",

"selectType": "select", #如果想要模糊查询,select改成containsList

"database": "supermarket_data",

"tableName": "订单",

"filter": {

"dim":

{

"field": "地区",

"dataType": "String"

},

"select": ["华东"]

}

}

]

}

}

a = get_token(host, post_json)

print(a)