前提・実現したいこと
GAS(Google Apps Script)でOneLoginというシステムのAPiを叩くべく、そのための最初の一歩としてtokenを取得したいと考えています。
APIリファレンスのページ
https://developers.onelogin.com/api-docs/1/oauth20-tokens/generate-tokens-2
curlのソースサンプルを基にGASを書いてみたのですが、実行したら以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
Exception: https://api.us.onelogin.com のリクエストに失敗しました(エラー: 400)。サーバー応答の一部: {"status":{"error":true,"code":400,"type":"bad request","message":"The authorization information is missing"}}(応答の全文を見るには muteHttpExceptions オプションを使用してください)
ページのエラーメッセージのところを見るとclient_idとclient_secretがおかしいそうという事で書いてありましたが、公式のDeveloperページにはGASのサンプルコードがなく、近しそうなNode.jsのコードの変数にしてみましたが、結果は同じでした。
こちらのエラー解消に必要な修正についてご教示いただけますと幸いです。
GASのソースコード
1 2function getOneLoginToken() { 3 4 var ONELOGIN_CLIENT_ID = 'XXXXXXXXXXXXXXXXXXXXXXX'; 5 var ONELOGIN_CLIENT_SECRET = 'XXXXXXXXXXXXXXXXXXXXXXX'; 6 7 var url = 'https://api.us.onelogin.com/auth/oauth2/v2/token'; 8 9 var headers = { 10 'Authorization': { 11 'client_id': ONELOGIN_CLIENT_ID, 12 'client_secret': ONELOGIN_CLIENT_SECRET 13 }, 14 'Content-type': 'application/json' 15 }; 16 17 var data = { 18 'grant_type': 'client_credentials' 19 }; 20 21 var options = { 22 'method': 'post', 23 'payload': JSON.stringify(data), 24 'headers': headers 25 }; 26 27 return token = UrlFetchApp.fetch(url, options); 28}
試したこと
GASではなくcurlで書くと以下で、これは問題なくレスポンス帰ってきます。
(サンプル通りなので通って当たり前ですが・・すみません)
curl 'https://api.us.onelogin.com/auth/oauth2/v2/token' \ -X POST \ -H "Authorization: client_id:XXXXXXXXXXXXXXXXXXXXX, client_secret:XXXXXXXXXXXXXXXXXXXXX" \ -H "Content-Type: application/json" \ -d '{ "grant_type":"client_credentials" }'
GASのコードで試した事は、以下です。
(1)muteHttpExceptionsオプションを指定してより詳細なログを見ようとしたが、オプションを指定してもより詳細なエラーメッセージは得られませんでした。
(2)「'」を「"」に全部置換してやっても同じでした。
(3)同じjs?のNode.jsのように変数名をAuthorization→authに、client_id→userに、client_secret→passに変更しても同じでした。
補足情報(FW/ツールのバージョンなど)
特にありません。
よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/15 15:56