質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • API

    1791questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • Monaca

    1092questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • REST

    164questions

    REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

  • Salesforce

    50questions

    Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。

monacaからSalesforceのアクセストークンを取得

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 50

前提・実現したいこと

(前提)
monaca、salesforce、javascript共に初心者です。

Salesforceの「REST API開発者ガイド」(https://developer.salesforce.com/docs/atlas.ja-jp.216.0.api_rest.meta/api_rest/intro_what_is_rest_api.htm)を参考に、コンソールからcurlを使用して以下のようなことが出来るようになりました。
1)アクセストークンの取得
2)取得したアクセストークンを用いてオブジェクトのレコードIDと値を取得
3)取得したアクセストークンとレコードIDを用いて値を更新

(実現したいこと)
コンソールから手打ちでなく、monaca(javascript)で動作させようとしています。

発生している問題・エラーメッセージ

上記2)3)はXMKHttpRequestを使って動きますが、1)については下記のエラーが出てしまい、アクセストークンの取得ができません。解決方法、ヒント等をお持ちの方、ご教示いただけないでしょうか。

エラーメッセージ
{
"error":"unsupported_grant_type",
"error_description":"grant type not supported"
}

該当のソースコード

■アクセストークンの取得
(コンソールからcurlで手入力→正常)
curl https://login.salesforce.com/services/oauth2/token -d "grant_type=password" -d "client_id=CLIENT_ID" -d "client_secret=CLIENT_SECRET" -d "username=USERNAME@.jp" -d "password=PASSWORD"

(monacaのjavascript→エラー)
var req = new XMLHttpRequest();
req.open("GET", 'https://login.salesforce.com/services/oauth2/token', false);
req.setRequestHeader('X-PrettyPrint', true);
req.setRequestHeader('content-Type', 'application/json');
req.send('{\"grant_type\":\'password\',\"client_id\":\'CLIENT_ID\',\"client_secret\":\'CLIENT_SECRET\',\"username\":\'USERNAME@.jp\',\"password\":\'PASSWORD\'}');
console.log(req.responseText);

試したこと

上記2)3)がmonacaで正常に動いていることの確認は、別途、コンソールからcurlで取得したアクセストークンをjavascriptのソースに直接書き込んで動かし、こちらは正常に動くことを確認しました。

(javascript→正常)
var req2 = new XMLHttpRequest(); 
req2.open("PATCH", 'https://ap*.salesforce.com/services/data/v20.0/sobjects/OBJ/ID', false);
req2.setRequestHeader('Authorization', 'Bearer curlで取得したアクセストークン');
req2.setRequestHeader('X-PrettyPrint', true);
req2.setRequestHeader('content-Type', 'application/json');
req2.send('{\"suuryo__c\":777}');

補足情報(FW/ツールのバージョンなど)

現在、CORS関係かと思い、salesforceのCORSを調べたところ、許可先に「*」(全て許可)が使用できず、「https://***」の形で入力する必要があるようです。この場合、monacaからのアクセスを許可するにはsalesforceにどのように書けば良いでしょうか。

monacaクラウドIDE、monacaデバッガを使用し、iPhone5Sで作業しています。
アシアルが出版している本のサンプル「バーコードスキャナアプリ」を参考にしています。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

同じタグがついた質問を見る

  • API

    1791questions

    APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

  • Monaca

    1092questions

    「Monaca」はiOS、Android、Windows向けのアプリ開発に対応した、Cordovaベースのモバイルアプリ開発プラットフォームです。HTML5、JavaScriptといったWeb標準技術を用いてモバイルアプリ開発を行うことができます。

  • REST

    164questions

    REST(Representational State Transfer)はwebアプリケーションの構築スタイルの一種です。HTTP GET/POSTによってリクエストを送信し、レスポンスはXMLで返されます。SOAPのようなRPCの構築と比べるとサーバからクライアントを分離することが出来る為、人気です。

  • Salesforce

    50questions

    Salesforceは、クラウド型の顧客関係管理(CRM)、営業支援(SFA)などのサービスを提供している企業。米カリフォルニア州に本社があり、日本法人は株式会社セールスフォース・ドットコムです。