PowerApps・CDSでもこのアプリケーションアクセス許可が使えるよーと、ちらっとだけお話しました。PowerApps・CDSとして最新環境で書き直してみたものを紹介したいと思います。AccessTokenを取得してみる注意点アプリ認証のポイント今回は以下のReferenceで紹介されている「アプリとして接続」を実施します。」で行う点と、この接続のための実行ユーザーを利用するという点にあります。つまるところアプリケーションのアクセス許可によるAPIの利用には、通常のOAuthプロセスで行われるユーザーログインの要求から、アクセス許可、アクセストークンの取得といったプロセスが存在しません。CDSはそのアーキテクチャやAPIの特性上、必ずアクセスユーザーというものが存在する前提で構成されています。ADアプリ登録までは基本的に同じプロセスなのですが、アプリとして接続するためのユーザーの作成と、そのユーザーとアプリを紐づける、という特殊な作業が発生します。ここを抑えておくことが、アプロとしての接続を行う場合に重要なポイントとなります。ADにアプリを登録しましょう。基本的な手順は今までの記事に書いてあるのと一緒です。管理センターに移動し、「アプリの登録」→「+新規登録」をクリック。任意のアプリケーション名を入力して、シングルテナントアプリケーションとして作成します。リダイレクトURIはローカルホストでかまいません。今回は特に使うシチュエーションがないためです。アプリを作成したら、クライアントIDを控えておきます。次に、「証明書とシークレット」の画面に移動して、クライアントシークレットを作成します。任意の名称と有効期間で登録し生成されたクライアントシークレットを同じように控えておきます。最後にAPIのアクセス許可を設定します。Service」というものもありますが、関係ありません。行うため、GraphAPIの文脈で行くとアプリケーションの許可になるのですが、PowerApps/CDSの性質上、それが使えません。そのため、「委任されたアクセス許可」を付与してあげます。次にこのアプリ認証用のためだけのユーザーというものを作成します。時に明示的なユーザーを指定しなくても、アクセスができるようになります。PowerAppsのCDS環境にアクセスし、設定アイコンから「詳細設定」の画面に移動します。私の環境が英語版で作ってしまったので英語ですが、日本語でもあまりかわらないです。設定一覧から「セキュリティ」に移動しユーザーをクリックします。ここでユーザーを作成するのですが、単純に「+新規」ボタンをクリックしてはいけません。ユーザー」を選択してください。ユーザー」を選択した後に「+新規」をクリックすることで新規作成画面に移動できます。移動した後も気が抜けません。ユーザー」に切り替えてください。ユーザーの作成を行うことができるようになります。Id」以外は自由に指定して大丈夫です。ADアプリのClientIdを指定する必要があります。これを以下のように入力したら、保存をクリックします。保存した後、仕上げにこのユーザーに対してセキュリティロールを設定します。これがAPIアクセス時におけるアクセス許可範囲に相当します。今回はあまり気にせずSystemAdminを付与しました。AccessTokenを取得してみるそれでは設定した情報を使って、AccessTokenを取得してみます。私が使用したPostmanのコレクションも公開しておいたので、参考にしてみてください。github.comPostmanにCollectionとEnvironmentをインポート後、以下のように各環境変数を設定します。Requestを確認します。今回試していてわかったのですが、どうやらまだAzureADV2のOAuth2エンドポイントには今回のアプローチが対応していないようでした。以下のコードはV1で実施したものを記載しています。ADのAccessToken要求URLは「POST:https://login.microsoftonline.com/{{TenantId}}/oauth2/token」です。ここにパラメータとして「grant_type=client_credentials」とともに、取得したClientId・ClientSecretを渡します。併せてResourceとして対象となるPowerApps・CDS環境のURLを渡すのがポイントですね。AzureテナントIDとCDSテナント名は私が使っているものをそのまま記載していますので、適宜差し替えてRequestしてみてください。Postmanのコレクションでは環境変数にそのまま設定すればOKです。application/x-www-form-urlencodedgrant_type=client_credentials&client_id=a98cea62-98f0-4b64-9d9d-b1265feb8ee5&client_secret=K2muHFy5VrBy1MW2_krbCB%3F%40vXXryLE%40&resource=https%3A%2F%2Forg61d4c5f1.api.crm.dynamics.com%2Fすると以下のようにAccessTokenを取得できます。APIにアクセスしてみると、以下のように取引先企業一覧が取得できました。APIにアクセスができてしまいます。通常のOAuthですとアプリに付与して公開とかあるかと思いますが、それとはまったく扱いが異なるものとなりますので、取り扱いにはご注意ください。私がニ...2018-01-03InstagramのAPIの使い方と制限。(翻訳)Twitter@sugimomotoさんのツイートはてなブログをはじめよう!sugimomotoさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。