質問編集履歴

4

書式の改善

2018/11/12 05:02

投稿

thtk
thtk

スコア10

test CHANGED
File without changes
test CHANGED
@@ -12,15 +12,25 @@
12
12
 
13
13
  ### 発生している問題・エラーメッセージ
14
14
 
15
- XMLHttpRequestで通信できない?状態です。
15
+ **<追記>
16
16
 
17
- xmlhttp.open以降処理流れず、とまっしまいます。
17
+ CORS (Cross-Origin Resource Sharing)関係エラーています。
18
18
 
19
- CORS (Cross-Origin Resource Sharing)問題に引っかかっているかもしれないすが、対処法もわからず、質問させていただきまし
19
+ サーバ側設定方法が不明なのでご教授いただきたく、**
20
20
 
21
+ ```ChromeConsole
21
22
 
23
+ Uncaught ReferenceError: onLoadFunc is not defined
22
24
 
25
+ at view__id1__id91_clientSide_onclick (XAgent_UI.xsp:171)
23
26
 
27
+ at _3.x_dfe [as _doFireEvent] (@Iq.js:45)
28
+
29
+ at _3.x_fe [as fireEvent] (@Iq.js:45)
30
+
31
+ at HTMLButtonElement.xaep_fpre (@Iq.js:45)
32
+
33
+ ```
24
34
 
25
35
  ### 該当のソースコード
26
36
 
@@ -56,9 +66,11 @@
56
66
 
57
67
  xmlhttp.open('POST', url, true);
58
68
 
59
- xmlhttp.setRequestHeader ( "Content-Type","application/json" );
69
+ xhr.withCredentials = true;//追記
60
70
 
61
- urlencoded" );
71
+ xhr.addEventListener('load', onLoadFunc, false);//追記
72
+
73
+ xmlhttp.setRequestHeader ( "Content-Type","application/x-www-form-urlencoded" );
62
74
 
63
75
  xmlhttp.send();
64
76
 
@@ -100,11 +112,29 @@
100
112
 
101
113
 
102
114
 
115
+ **<追記>
116
+
117
+ Chrome開発者コンソールで確認したところ、CORSによるエラーが出ておりましたので、クライアント側で以下の2行を追加したのですが、サーバ側はどのように設定したらよいのでしょうか。Access-Control-Allow-Originの設定方法がわかりません。。**
118
+
119
+ ```
120
+
121
+ xhr.withCredentials = true;
122
+
123
+ xhr.addEventListener('load', onLoadFunc, false);
124
+
125
+ ```
126
+
103
127
  ### 参考サイト
104
128
 
105
129
  CORS問題の解決
106
130
 
107
131
  http://guylocke.blogspot.com/2014/12/xagent.html
132
+
133
+
134
+
135
+ **<追記>**
136
+
137
+ **https://qiita.com/tomoyukilabs/items/81698edd5812ff6acb34**
108
138
 
109
139
 
110
140
 

3

書式の改善をしました

2018/11/12 05:02

投稿

thtk
thtk

スコア10

test CHANGED
@@ -1 +1 @@
1
- XpagesからSalesforceに接続したい
1
+ 社内システムからSalesforceに接続したい
test CHANGED
@@ -1,20 +1,10 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- Chromeで表示させたXpage(IBM Notes)からSalesforceにトークン要求、レスポンス?を得たいです
3
+ XMLHttpRequestでSalesforceに接続したいです
4
4
 
5
+ 社内システムとしてIBM Notesを使用しており、
5
6
 
6
-
7
- 最終的には、Salesforceと社内システムIBM Notesの連携ですが、
8
-
9
- 一番初歩的なところで行き詰っているため質問させていただきます。
10
-
11
-
12
-
13
- ### 質問に至るまで
14
-
15
- IBM Lotusscriptと式言語のみが使える弱小エンジニアです。
16
-
17
- AjaxもJavascript自体も初めて、自力解決が困難と判断した、、、
7
+ JavaScriptで記述たXpage(Chromeで表示)からSalesforceに接続したいです。
18
8
 
19
9
 
20
10
 
@@ -22,99 +12,19 @@
22
12
 
23
13
  ### 発生している問題・エラーメッセージ
24
14
 
15
+ XMLHttpRequestで通信できない?状態です。
16
+
17
+ xmlhttp.open以降の処理が流れず、とまってしまいます。
18
+
19
+ CORS (Cross-Origin Resource Sharing)の問題に引っかかっているのかもしれないですが、対処法もわからず、質問させていただきました。
25
20
 
26
21
 
27
- CORS (Cross-Origin Resource Sharing)の問題解決を、XAgentなるもので解決できると知り、スニペット流用で動かしてみたのですが、Salesforceに接続することができず、何かエラーが起こっているのかどうかの現状の問題を確認する術もなく、質問させていただきます。
28
-
29
- 正常であれば、上側ソースコード(SSJS)のXAgent.xspをChromeで実行すれば、Salesforceのトークン要求のレスポンスのBody情報がJSON形式で表示されると思っています。
30
22
 
31
23
 
32
24
 
33
25
  ### 該当のソースコード
34
26
 
35
-
36
-
37
- ```SSJS
27
+ ```JavasScript
38
-
39
- //ファイル名:XAgent.xsp
40
-
41
-
42
-
43
- //トークン要求
44
-
45
- var siteInfo ="https://login.salesforce.com/services/oauth2/token?grant_type=password&client_id=(省略)&client_secret=(省略)&username=(省略)&password=(省略)";
46
-
47
-
48
-
49
-
50
-
51
- //*
52
-
53
- var url:java.net.URL = new java.net.URL(siteInfo);
54
-
55
- url.openConnection();
56
-
57
-
58
-
59
- var is:java.io.InputStream = url.openStream();
60
-
61
- var isr:java.io.InputStreamReader = new java.io.InputStreamReader(is,"UTF-8");
62
-
63
- var result = "";
64
-
65
- var reader:java.io.BufferedReader = new java.io.BufferedReader(isr);
66
-
67
-
68
-
69
- while( reader.ready() ){
70
-
71
- result +=reader.readLine();
72
-
73
- }
74
-
75
- reader.close();
76
-
77
- is.close();
78
-
79
-
80
-
81
-
82
-
83
- var exCon = facesContext.getExternalContext();
84
-
85
- var writer = facesContext.getResponseWriter();
86
-
87
- var response = exCon.getResponse();
88
-
89
- //*/
90
-
91
-
92
-
93
- //*
94
-
95
- response.setContentType( "application/x-www-form-urlencoded" );
96
-
97
- //*/
98
-
99
- //response.setContentType( "application/json" );
100
-
101
- response.setHeader( "Cache-Control", "no-cache" );
102
-
103
-
104
-
105
- writer.write(result);
106
-
107
-
108
-
109
- writer.endDocument();
110
-
111
- facesContext.responseComplete();
112
-
113
- ```
114
-
115
-
116
-
117
- ```CCJS
118
28
 
119
29
  //ファイル名:UI.xsp
120
30
 
@@ -122,7 +32,7 @@
122
32
 
123
33
  // URLを生成
124
34
 
125
- var url = "https://(省略)/XAgent.xsp";
35
+ var url = "https://login.salesforce.com/services/oauth2/token?grant_type=password&client_id=(省略)&client_secret=(省略)&username=(省略)&password=(省略)";
126
36
 
127
37
 
128
38
 
@@ -146,17 +56,9 @@
146
56
 
147
57
  xmlhttp.open('POST', url, true);
148
58
 
149
- //xmlhttp.setRequestHeader ( "Content-Type","text/xml; charset=utf-8" );
150
-
151
- //xmlhttp.withCredentials = true;
152
-
153
- //xmlhttp.addEventListener('load', onLoadFunc, false);
154
-
155
59
  xmlhttp.setRequestHeader ( "Content-Type","application/json" );
156
60
 
157
- //xmlhttp.setRequestHeader ( "Authorization","Bearer (省略)");
61
+ urlencoded" );
158
-
159
- //xmlhttp.setRequestHeader ( "Content-Type","application/x-www-form-urlencoded" );
160
62
 
161
63
  xmlhttp.send();
162
64
 
@@ -166,31 +68,21 @@
166
68
 
167
69
  function chkResponse() {
168
70
 
169
- if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
71
+ if ( xmlhttp.readyState == 4 && xmlhttp.status == 200 ) {
170
72
 
171
73
 
172
74
 
173
- var ret = xmlhttp.responseText;
75
+ var ret = xmlhttp.responseText;
174
76
 
175
- var obj = JSON.parse( ret );
77
+ var obj = JSON.parse( ret );
176
78
 
177
79
 
178
80
 
179
- document.getElementById( "#{id:access_token}" ).value = obj.access_token;
180
-
181
- document.getElementById( "#{id:instance_url}" ).value = obj[0]['instance_url'];
182
-
183
- document.getElementById( "#{id:id}" ).value = obj[0]['id'];
81
+ //・・・・(省略)
184
-
185
- document.getElementById( "#{id:token_type}" ).value = JSON.stringify(obj['token_type']);
186
-
187
- document.getElementById( "#{id:issued_at}" ).value = obj[0]['issued_at'];
188
-
189
- document.getElementById( "#{id:signature}" ).value = obj[0]['signature'];
190
82
 
191
83
 
192
84
 
193
- }
85
+ }
194
86
 
195
87
  }
196
88
 
@@ -200,11 +92,11 @@
200
92
 
201
93
  ### 試したこと
202
94
 
203
- コメンアウトしているのですが、らないなりにContent-Type変えてみたりHeaderの内容を変えしたのですが、うまくいきません
95
+ CORSをXAgentなるもので解決できると知り、スニペット流用(参考サイ:CORS問題の解決)で動かしてみたのですが、こちらもSalesforceに接続することができず、何エラーが起こってるのかどうかの現状の問題を確認する術もく、XAgentに頼らないより一般的な方法と思い質問させだきました。
204
96
 
205
- SSJSのURLだけ変更しopenwhethermapのAPIをたたくと、JSON形式のデータが表示されることは確認できました。
206
97
 
98
+
207
- ChromeのDHCを使って、同じURLに対しトークン要求をしてSalesforceのトークンを取得できること確認できました。
99
+ Chromeの拡張機能「RestletClient-REST API Testing」を使って、Salesforceの同じURLに対しトークン要求をしてSalesforceのトークンを取得できること確認できました。
208
100
 
209
101
 
210
102
 
@@ -222,7 +114,7 @@
222
114
 
223
115
 
224
116
 
225
- DHCでの接続
117
+ RestletClient-REST API Testingでの接続
226
118
 
227
119
  https://web.plus-idea.net/2016/06/salesforce-rest-api-call-setting/
228
120
 
@@ -234,4 +126,4 @@
234
126
 
235
127
  クライアントアプリ:IBM Notes Client 9.0.1 FP5/Domino Server 9.0.1 FP8
236
128
 
237
- Xpages表示:GoogleChrome
129
+ Xpages表示:GoogleChrome(バージョン70)

2

書式の改善

2018/11/12 00:41

投稿

thtk
thtk

スコア10

test CHANGED
File without changes
test CHANGED
@@ -154,8 +154,6 @@
154
154
 
155
155
  xmlhttp.setRequestHeader ( "Content-Type","application/json" );
156
156
 
157
- //var token = '00D7F00000489Ig!AQkAQDP9CtrwkjlANe59v5wAmCzT5jt.akxjpbR65m_4SR36G4rDlZmnTg_YUfdhwR7PlnQOozzoX.l5BZ0kDtGSX2nFsqlV';
158
-
159
157
  //xmlhttp.setRequestHeader ( "Authorization","Bearer (省略)");
160
158
 
161
159
  //xmlhttp.setRequestHeader ( "Content-Type","application/x-www-form-urlencoded" );

1

書式の改善

2018/11/08 23:34

投稿

thtk
thtk

スコア10

test CHANGED
File without changes
test CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  CORS (Cross-Origin Resource Sharing)の問題解決を、XAgentなるもので解決できると知り、スニペット流用で動かしてみたのですが、Salesforceに接続することができず、何かエラーが起こっているのかどうかの現状の問題を確認する術もなく、質問させていただきます。
28
28
 
29
- うまくいけば上側のXAgent.xspをChromeで実行すれば、Salesforceのトークン要求のレスポンスのBody情報がJSON形式で表示されると思っています。
29
+ 正常であれ上側ソースコード(SSJS)のXAgent.xspをChromeで実行すれば、Salesforceのトークン要求のレスポンスのBody情報がJSON形式で表示されると思っています。
30
30
 
31
31
 
32
32