私はUCWAとパスワードトークンを使ってアプリケーションを開発しました。私は、イベントを使ってアプリケーションで認証されたユーザーに届くすべてのメッセージを読んでいますが、トークンは長続きせず、更新はブラウザを使用しています。これは自動化に関する恐ろしいものです。SkypeでUCWAトークンを自動的に更新するビジネス用オンライン
私は自分のアプリケーションを完全に自動化することができるので、ブラウザ経由で更新する必要のないトークンを取得する方法はありますか?私はGithubとucwaウェブサイトのすべてのドキュメントを読んだ。
これはトークンを取得するためのリクエストです。
サインインのURL
はデフ(REDIRECT_URI、CLIENT_ID、テナント、リソースを)get_signin_url取得: xframe、user_discovery_uri、リソース= do_autodiscover(設定[ 'ドメイン'])、いくつかのステップの後
# Build the query parameters for the signin url
params = {
'client_id': client_id,
'redirect_uri': redirect_uri,
'response_type': 'token',
'response_mode': 'form_post',
'resource': resource
}
# The authorize URL that initiates the OAuth2 client credential flow for admin consent
authorize_url = '{0}{1}'.format(authority, '/%s/oauth2/authorize?{0}' % tenant)
# Format the sign-in url for redirection
signin_url = authorize_url.format(urlencode(params))
return signin_url
トークンを取得する:
def get_token_from_code(client_id, tenant, auth_code, redirect_uri, resource, client_secret):
# Build the post form for the token request
post_data = {
'grant_type': 'authorization_code',
'code': auth_code,
'redirect_uri': redirect_uri,
'resource': resource,
'client_id': client_id,
'client_secret': client_secret
}
# The token issuing endpoint
token_url = '{0}{1}'.format(authority, '/{0}/oauth2/token'.format(tenant))
# Perform the post to get access token
response = requests.post(token_url, data=post_data)
try:
# try to parse the returned JSON for an access token
access_token = response.json()['id_token']
return access_token
except:
raise Exception('Error retrieving token: {0} - {1}'.format(
response.status_code, response.text))
ありがとう!
あなたのpythonを使用しているように見えます。 broswerを使用せずにトークンを取得するために、[ADAL library for Python](https://github.com/AzureAD/azure-activedirectory-library-for-python)を使用していない理由はありますか? – ShelbyZ
あなたの答えをありがとう!しかし、私の主な問題は、Active Directoryトークンではなく、UCWAのものとは異なります。私はADALとAndrey Markeevの答えを使って解決策を改善できるかどうか試してみるつもりですが。 :+1: –