繁体   English   中英

检索 Auth0 用户信息

[英]Retrieving Auth0 User information

我正在尝试构建一个 python 脚本来访问 email 并在我的 auth0 门户上访问我所有用户的最后登录时间数据。 我应该如何处理这个? 这是我到目前为止的代码

import sys
sys.path.append("D:\home\site\wwwroot\env\Lib\site-packages")

import quickbase
import urllib2
import pypyodbc
import timestring
import datetime
import time
import math
import sys
import locale
import smtplib
import pypyodbc
import httplib
import json
import urllib
import urllib2

from dateutil.relativedelta import relativedelta

#Activate Webhook with Campaign is added or modified.
#0.1 establish connection to SQL server
connection = pypyodbc.connect('Driver={SQL Server Native Client 11.0};'
'Server=tcp:xxxxe.database.windows.net,1433;'
'Database=LQDC;'
'uid=Admin@lxx;pwd=xxxx')
cursor = connection.cursor()

#0.2 establish connection to Auth0
def main():

#Configuration Values
AUDIENCE = "https://xxe.auth0.com/api/v2/"
DOMAIN = "lxxx.auth0.com"
CLIENT_ID = "xxxxxL"
CLIENT_SECRET = "xxxxxxr"
GRANT_TYPE = "client_credentials" # OAuth 2.0 flow to use

#Get an Access Token from Auth0
base_url = "https://{domain}".format(domain=DOMAIN)
data = urllib.urlencode([('client_id', CLIENT_ID),
('client_secret', CLIENT_SECRET),
('audience', AUDIENCE),
('grant_type', GRANT_TYPE)])
req = urllib2.Request(base_url + "/oauth/token", data)
response = urllib2.urlopen(req)
oauth = json.loads(response.read())
access_token = oauth['access_token']

#Get all Applications using the token
req = urllib2.Request(base_url + "/api/v2/clients")
req.add_header('Authorization', 'Bearer ' + access_token)
req.add_header('Content-Type', 'application/json')

try:
response = urllib2.urlopen(req)
res = json.loads(response.read())
print res

conn = httplib.HTTPSConnection(DOMAIN)
payload = "{\"connection_id\":\"not sure which API/token/code to put here\",\"format\": \"csv\", \"limit\": 4, \"fields\": [{ \"name\": \"email\"},{\"name\": \"last_ip\"}, { \"name\": \"created_at\"}, { \"name\": \"last_login\"}]}"
headers = {
    'authorization': "Bearer "+access_token,
    'content-type': "application/json"
    }
conn.request("POST", "/xxxx.auth0.com/api/v2/jobs/users-exports", payload, headers)
res = conn.getresponse()
data = res.read()
print(data.decode("utf-8"))
except urllib2.HTTPError, e:
print 'HTTPError = ' + str(e.code) + ' ' + str(e.reason)
except urllib2.URLError, e:
print 'URLError = ' + str(e.reason)
except urllib2.HTTPException, e:
print 'HTTPException'
except Exception:
print 'Generic Exception'

#Standard boilerplate to call the main() function.
if name == 'main':
main()


第一部分工作正常,第二部分返回下面的错误,我试图让它返回一个 csv 文件,其中列出了用户的所有信息,并用它自动填充数据库。

还在这里找到了一些有用的链接,我尝试将它们合并到我的代码中: https://auth0.com/docs/users/guides/bulk-user-exports

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>Cannot POST /lqdfinance.auth0.com/api/v2/jobs/users-exports</pre>
</body>
</html>

正如 Nishant 建议的那样,我将引导您使用我们的 Python 快速入门,以便从构建此类功能开始。

根据您的总体详细目标,可能需要一些偏差,但这是一个很棒的起点! 如果您有任何问题,请告诉我们!

https://auth0.com/docs/quickstart/backend/python

正如我所看到的,您的代码,您需要一个连接 ID,以便您可以使用

base_url + '/api/v2/connections'

获取您的连接 ID 接下来,您需要修改有效负载正文,如下所示

{
  "connection_id": "your_id_as_above",
  "format": "csv",
  "limit": 5,
  "fields": [
      {
        "name": "user_id"
      },
      {
        "name": "name"
      },
      {
        "name": "email"
      },
      {
        "name": "identities[0].connection",
        "export_as": "provider"
      },
      {
        "name": "user_metadata.some_field"
      }
    ]
}

为了测试您的响应数据,我建议您使用 Postman 测试您的 api 有效负载和响应,因为它可以让您更清楚地了解请求的工作方式。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM