python - 使用 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
解决方案
推荐阅读
- javascript - 如何禁用调整弹出窗口的大小?
- laravel - 如何与 EloquentFilter 一起执行 laravel WHERE
- android - RxJava2 Letting network call complete if fragment/activity changes
- reactjs - what is the best way to deploy react app in lan only
- javascript - 我的 JavaScript 代码中缺少什么?
- python - 在 tkinter Text 小部件中获取位置
- node.js - nightmare.js, on .evaluate this gives me an error on node
- javascript - Unexpected token m in JSON at position 0 for cloud 9.io
- amazon-web-services - Allowing IAM access to only a specific subdomain on Route 53
- r - 如何获得相同的替换行和数据?