Xero は、OAuth1 の代わりに OAuth2 接続を要求するように API を変更しました。
私は OAuth1 で実用的なソリューションを持っていましたが、Oauth2 の例はせいぜい不十分で、主に Web サイト用です。
私は、Oauth1 ソリューションの作成に成功したもう 1 人の開発者です。このソリューションは、Web サーバーが関与しないマシン ツー マシン ソリューションとして正常に機能しました。
Xero には、Postman で実行されるいくつかの例があり、私のテスト環境で簡単に動作します。
Python3 でトークンを更新する郵便配達員のアクションを再現しようとしています。
以下の私の基本的なコードは、私が現在いる場所です:
#client_id = "xxxxx"
#client_secret = "xxxxx"
callback_url = "https://api.xero.com/connections"
re_directURI = "https://developer.xero.com"
scopes = "offline_access accounting.contacts accounting.transactions"
refresh_url = "https://identity.xero.com/connect/token"
access_token = open('AccessToken.txt').read()
old_refresh_token = open('RefreshToken.txt','r').read()
# Refresh Token code...
import requests
#def refresh_xero_token(refresh_token):
headers = {
'grant_type': 'refresh_token',
'Content-Type': 'application/json',
}
data = {
'grant_type': 'refresh_token',
'refresh_token': old_refresh_token,
'client_id': client_id,
'client_secret': client_secret
}
print(data,headers)
response = requests.post(refresh_url, headers=headers, data=data)
#return response.json()
print(response.text)
Python を使用して Xero サーバーと通信し、ローカル データを Zero API に転送するだけで、Web サーバーなしで動作する例をこれまでのところ見つけられませんでした。
xoauth,.exe (windows) を使用して access_token を取得すると、postman で更新トークン、接続、請求書などの例をデモ会社に実行できます。
これらの例を再現するだけで、実用的なソリューションを得るために必要なものが得られると信じています。
現在、このpythonコードでは {"error":"invalid_request"} しか得られません
だから、明らかに私は何かが欠けています。
私は自分自身を Python または Oauth2 の初心者として分類しますが、Oauth1 接続ソリューションで以前に成功したため、このパスを選択しました。
Xero 開発者コミュニティにお願いしたいのですが、私たちのソフトウェアのユーザーが Xero アカウントにデータをプッシュするためにこれを書いているので、テスト用に試用アカウントしか持っていません。これでは Xero 開発者コミュニティにアクセスできません。 .
それ自体は本当に迷惑です。
Xero のサポートもほとんど役に立たないようで、試してみました。
支援できる人がそこにいるなら、それは素晴らしいことです。
与えられた助けを前もって感謝します。