首页 > 解决方案 > 使用 Python 脚本对 Auth0 进行身份验证时出现 400 HTTPError

问题描述

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

第一部分工作正常,第二部分返回 400 HTTPError。

我试图让它返回一个包含所有用户信息的 csv 文件,并用它自动填充数据库。

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

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

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

from urllib import urlencode
from urllib2 import urlopen, Request
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’)

  post_fields = {'connection_id' : 'xxxxxxxx', 'format' : 'csv', 'limit' : '4', "fields" : [{ "name": "email"},{"name": "last_ip"}, { "name": "created_at"}, { "name": "last_login"}] }
  req2 = urllib2.Request((base_url + "/api/v2/jobs/users-exports"),urlencode(post_fields).encode())
  req2.add_header('Authorization', 'Bearer ' + access_token)
  req2.add_header('Content-Type', 'application/json')

  try:
    response = urllib2.urlopen(req)
    res = json.loads(response.read())
    print res
    response2 = urllib2.urlopen(req2)
    result = json.loads(response.read())
    print result
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()

将此作为我第二个请求的输出

HTTPError = 400 Bad Request

标签: pythonhttpauth0

解决方案


推荐阅读