# grant\_typeについて

**URL:** <https://community.cybozu.dev/t/topic/626>\
**Category:** kintone 開発相談\
**Created:** [2017 年 11 月 21 日午前 11:03 UTC](https://community.cybozu.dev/t/topic/626 "2017-11-21T11:03:13Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Legacy\_Account1982](https://avatars.discourse-cdn.com/v4/letter/l/dec6dc/32.png) [@Legacy\_Account1982](https://community.cybozu.dev/u/Legacy_Account1982)\
**Post date:** [2017 年 11 月 21 日午前 11:03 UTC](https://community.cybozu.dev/t/topic/626/1 "2017-11-21T11:03:13Z")

</div>

kintone.proxyを利用して外部APIと接続を試みていますが、  
400 {error: “invalid\_request”, error\_description: “Request is missing grant type.”}&nbsp;  
と返ってきます。

接続先のcurlでのサンプルでは、

```
$ curl -v https://api.makeleaps.com/user/oauth2/token/ \
-X POST \
-u "CLIENT_ID:CLIENT_SECRET" \
-d "grant_type=client_credentials"

```

上記の様に記載されており、これに従ってCurlでテストしたときは200が返ってきます。

kintoneマッシュアップのための豆知識（curlコマンドとkintone.proxy()の対応）を拝見する限り、  
④リクエストデータ(フォーム形式) -d “{key}={value}” 第4引数「date」 ’ “{key}={value}” ’  
4番目の引数にgrant\_type=client\_credentialsと入れてあげるだけだと思うのですが、grant typeを認識してくれません。

var basic\_token = clientApiKey+“:”+clientSecret;

var baseUrl = “[https://api.makeleaps.com](https://api.makeleaps.com)”;  
var getTokenUrl = baseUrl + “/user/oauth2/token/”;  
var generalApiUrl = baseUrl + “/api/”;

var headers = {  
“Content-Type” : “application/json”,  
“Authentication” : "Basic " + basic\_token  
};

var contents = “grant\_type=client\_credentials”;

kintone.proxy(getTokenUrl, ‘POST’, headers, contents, function(body, status, headers)

何か認識が間違っていることろがあれば、お教えください。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2017 年 11 月 21 日午後 1:10 UTC](https://community.cybozu.dev/t/topic/626/2 "2017-11-21T13:10:40Z")

</div>

ぱっと見きになるのは、[参照されているTips](https://community.cybozu.dev/hc/ja/articles/203446970)にあるサンプルの例でもそうですが、cURLコマンドで -H を指定せずに -d を’{key:value}’ のテキスト形式で記載するリクエストのContent-Typeは application/x-www-form-urlencoded となりkintone.proxy()でリクエストする際には明示する必要がありますが、現状 application/json が指定されているので、記載されているcURLコマンドとkintone.proxy() のリクエストは等価になってないものと考えられます（&nbsp;application/x-www-form-urlencoded に変えて試してみると良いと思います）。

&nbsp;

また、cURLとkintone.proxy() のリクエスト内容が等価になっているかを調べる方法として、[この辺](https://community.cybozu.dev/hc/ja/community/posts/255646366)で触れているRequest.Binのようなサービスは非常に有用なので確認に使われると良いかと思います。

&nbsp;

OAuth認可を行うサービスへのリクエストは kintone.proxy() だけでの実装は難しいことが殆どですが、Client Credential Grantであれば大丈夫かと思います。健闘をお祈りしています。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1982](https://avatars.discourse-cdn.com/v4/letter/l/dec6dc/32.png) [@Legacy\_Account1982](https://community.cybozu.dev/u/Legacy_Account1982)\
**Post date:** [2017 年 11 月 22 日午前 4:43 UTC](https://community.cybozu.dev/t/topic/626/3 "2017-11-22T04:43:42Z")

</div>

ご返事ありがとうございます！

application/x-www-form-urlencoded

こちらでも試しましたが、こちらの場合、invalid\_clientと返ってきてしまいます。

RequestBin試してみます。  
ありがとうございました。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1574](https://avatars.discourse-cdn.com/v4/letter/l/76d3ee/32.png) [@Legacy\_Account1574](https://community.cybozu.dev/u/Legacy_Account1574)\
**Post date:** [2017 年 11 月 22 日午前 6:48 UTC](https://community.cybozu.dev/t/topic/626/4 "2017-11-22T06:48:29Z")

</div>

多少マシになってる感じはしますが、要切分ですね。RequestBinでぜひ見比べてみてください。

---

<div class="post-metadata">

**Author:** ![Legacy\_Account1982](https://avatars.discourse-cdn.com/v4/letter/l/dec6dc/32.png) [@Legacy\_Account1982](https://community.cybozu.dev/u/Legacy_Account1982)\
**Post date:** [2017 年 11 月 22 日午前 7:16 UTC](https://community.cybozu.dev/t/topic/626/5 "2017-11-22T07:16:04Z")

</div>

解決できましたので、報告させていただきます。

postmanで確認しながら進めまして、

application/x-www-form-urlencoded

で正解でした。

invalid\_clientと返ってくるのは、単純にBase64エンコードをencodeURI()でおこなっていると勘違いしており、変換されていない初歩的なミスでした。  
大変お騒がせいたしました。
