Я пытаюсь следовать документации Plaid отсюда , и я не могу понять, откуда мне взять public_token
, когда я работаю над Plaid development окружающая обстановка. Они говорят, что:
Во втором примере:
from plaid import Client
client = Client(client_id='***', secret='***', public_key='***', environment='sandbox')
# the public token is received from Plaid Link
response = client.Item.public_token.exchange(public_token)
access_token = response['access_token']
Я не знаю, откуда взялся public_token
. Если я go к этому Plaid Link , они говорят:
Этот репозиторий больше не поддерживается. Чтобы интегрироваться с пледом, посетите документы. https://plaid.com/docs
Тогда, когда я go к их официальным документам , я не могу найти какой-либо способ получить это public token
.
Я пытаюсь сделать что-то вроде этого:
from exceptions import (
InvalidPlaidEnvironment,
MissingPlaidCredential
)
from plaid import Client
from plaid.errors import APIError, ItemError, InvalidRequestError
VALID_ENVIRONMENTS = (
'sandbox',
'development',
'production'
)
CLIENT_ID = '<development_client_id>'
SECRET = '<development_secret>'
PUBLIC_KEY = '<development_public_key>'
ENVIRONMENT = 'development'
class PlaidProcessor:
"""
Simple processor class for Plaid API
"""
def __init__(
self,
client_id=CLIENT_ID,
secret=SECRET,
public_key=PUBLIC_KEY,
environment=ENVIRONMENT
):
"""
Constructor for PlaidProcessor. Initialize our class with basic credentials
data.
Args:
client_id (str): Plaid client ID
secret (str): Plaid secret
public_key (str): Plaid public key
environment (str): One of sandbox, development, or production
"""
self.client_id = client_id
self.secret = secret
self.public_key = public_key
self.environment = environment
if not self.client_id:
raise MissingPlaidCredential(
'Missing CLIENT_ID. Please provide Plaid client id.'
)
if not self.secret:
raise MissingPlaidCredential(
'Missing SECRET. Please provide Plaid secret.'
)
if not self.public_key:
raise MissingPlaidCredential(
'Missing PUBLIC_KEY. Please provide Plaid public key.'
)
if not self.environment:
raise MissingPlaidCredential(
'Missing environment. Please provide Plaid environment.'
)
if self.environment.lower() not in VALID_ENVIRONMENTS:
valid_environments_str = ','.join(VALID_ENVIRONMENTS)
raise InvalidPlaidEnvironment(
f'Please insert one of the following environments: {valid_environments_str}'
)
self.client = Client(
client_id=self.client_id,
secret=self.secret,
public_key=self.public_key,
environment=self.environment
)
self.access_token = None
self.public_token = None
def get_public_token(self):
# how do I get the access token?
pass
В документах также указано следующее:
A public_token
(которое возвращается в вашем обратном вызове Link onSuccess()
) должно быть передано на ваш сервер, который заменит его на access_token
. public_tokens - токены одноразового использования, срок действия которых истекает через 30 минут. При необходимости вы можете сгенерировать новые public_tokens через конечную точку / item / public_token / create.
access_token
используется для доступа к данным продукта для элемента. Это должно храниться надежно, и никогда в коде на стороне клиента. Это используется для выполнения аутентифицированных запросов к Plaid API для пользователя. По умолчанию access_tokens не имеют срока действия, хотя вы можете вращать их; если он оказывается в состоянии ошибки, access_token снова будет работать, если ошибка элемента устранена. Каждый маркер access_token уникален для конкретного Предмета и не может использоваться для доступа к другим Предметам.
, но это только сбивает с толку. Кто-нибудь может дать мне несколько советов по этому поводу?