Plaid API快速入门项目错误http://127.0.0.1:5000/get_access_token

时间:2017-11-13 14:30:02

标签: python api token access plaid

我正在尝试使用plaid API。我创建了我的帐户以获取API密钥,我有快速入门项目。我把我的密钥放在代码中(它们不在下面的代码中应用),当我运行它时,我使用沙盒凭证。不幸的是,在登录成功后,我总是在尝试接收访问令牌时收到相同的错误:

  

HTTP500:SERVER ERROR - 服务器遇到意外情况   这阻止了它完成请求。(XHR)POST -   http://127.0.0.1:5000/get_access_token

以下是代码:

import os
import datetime
import plaid
from flask import Flask
from flask import render_template
from flask import request
from flask import jsonify

app = Flask(__name__)


# Fill in your Plaid API keys - https://dashboard.plaid.com/account/keys
PLAID_CLIENT_ID = os.getenv('PLAID_CLIENT_ID')
PLAID_SECRET = os.getenv('PLAID_SECRET')
PLAID_PUBLIC_KEY = os.getenv('PLAID_PUBLIC_KEY')
# Use 'sandbox' to test with Plaid's Sandbox environment (username: 
user_good,
# password: pass_good)
# Use `development` to test with live users and credentials and `production`
# to go live
PLAID_ENV = os.getenv('PLAID_ENV', 'sandbox')


client = plaid.Client(client_id = PLAID_CLIENT_ID, secret=PLAID_SECRET,
                  public_key=PLAID_PUBLIC_KEY, environment=PLAID_ENV)

@app.route("/")
def index():
   return render_template('index.ejs', plaid_public_key=PLAID_PUBLIC_KEY, 
plaid_environment=PLAID_ENV)


access_token = None
public_token = None

@app.route("/get_access_token", methods=['POST'])
def get_access_token():
  global access_token
  public_token = request.form['public_token']
  exchange_response = client.Item.public_token.exchange(public_token)
  print ('public token: ' + public_token)
  print ('access token: ' + exchange_response['access_token'])
  print ('item ID: ' + exchange_response['item_id'])

  access_token = exchange_response['access_token']

  return jsonify(exchange_response)

@app.route("/accounts", methods=['GET'])
def accounts():
  global access_token
  accounts = client.Auth.get(access_token)
  return jsonify(accounts)

@app.route("/item", methods=['GET', 'POST'])
def item():
  global access_token
  item_response = client.Item.get(access_token)
  institution_response = client.Institutions.get_by_id(item_response['item']
['institution_id'])
  return jsonify({'item': item_response['item'], 'institution': 
institution_response['institution']})

@app.route("/transactions", methods=['GET', 'POST'])
def transactions():
  global access_token
  # Pull transactions for the last 30 days
  start_date = "{:%Y-%m-%d}".format(datetime.datetime.now() + 
datetime.timedelta(-30))
  end_date = "{:%Y-%m-%d}".format(datetime.datetime.now())

  try:
    response = client.Transactions.get(access_token, start_date, end_date)
    return jsonify(response)
  except plaid.errors.PlaidError as e:
    return jsonify({'error': {'error_code': e.code, 'error_message': 
str(e)}})

@app.route("/create_public_token", methods=['GET'])
def create_public_token():
  global access_token
  # Create a one-time use public_token for the Item. This public_token can 
be used to
  # initialize Link in update mode for the user.
  response = client.Item.public_token.create(access_token)
  return jsonify(response)

if __name__ == "__main__":
    app.run(port=os.getenv('PORT', 5000))

2 个答案:

答案 0 :(得分:0)

通过将凭据放入正在安装plaid时创建的client.py文件来解决问题

答案 1 :(得分:0)

更新你的代码 PLAID_CLIENT_ID = 'client_id' PLAID_SECRET = 'secret' PLAID_PUBLIC_KEY = 'key' PLAID_ENV = 'sandbox'