質問編集履歴
4
書式の改善
test
CHANGED
File without changes
|
test
CHANGED
@@ -12,15 +12,25 @@
|
|
12
12
|
|
13
13
|
### 発生している問題・エラーメッセージ
|
14
14
|
|
15
|
-
|
15
|
+
**<追記>
|
16
16
|
|
17
|
-
|
17
|
+
CORS (Cross-Origin Resource Sharing)関係のエラーが出ています。
|
18
18
|
|
19
|
-
|
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
|
-
x
|
69
|
+
xhr.withCredentials = true;//追記
|
60
70
|
|
61
|
-
|
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
書式の改善をしました
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
社内システムからSalesforceに接続したい
|
test
CHANGED
@@ -1,20 +1,10 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
|
3
|
-
|
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
|
-
|
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
|
-
```
|
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://(省略)
|
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
|
-
|
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
|
-
|
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
|
-
|
95
|
+
CORSをXAgentなるもので解決できると知り、スニペット流用(参考サイト:CORS問題の解決)で動かしてみたのですが、こちらもSalesforceに接続することができず、何かエラーが起こっているのかどうかの現状の問題を確認する術もなく、XAgentに頼らないより一般的な方法をと思い、質問させていただきました。
|
204
96
|
|
205
|
-
SSJSのURLだけ変更しopenwhethermapのAPIをたたくと、JSON形式のデータが表示されることは確認できました。
|
206
97
|
|
98
|
+
|
207
|
-
Chromeの
|
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
|
-
|
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
書式の改善
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
書式の改善
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
|
-
|
29
|
+
正常であれば、上側ソースコード(SSJS)のXAgent.xspをChromeで実行すれば、Salesforceのトークン要求のレスポンスのBody情報がJSON形式で表示されると思っています。
|
30
30
|
|
31
31
|
|
32
32
|
|