質問編集履歴

5

エラーコードの日本語訳

2016/12/01 21:42

投稿

duck
duck

スコア28

test CHANGED
File without changes
test CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
 
13
- サンプルコードを実行すると、「A http status of the response was '400 Bad Request'.」が返ってくる。
13
+ サンプルコードを実行すると、「A http status of the response was '400 Bad Request'.」(リクエストに問題あります。リクエストパラメータやJSONのフォーマットを確認してください。)が返ってくる。
14
14
 
15
15
  LINE Messaging APIドキュメントを読んだところ署名検証が必要らしいが、どのようにコードに起こして実装すればよいのか分からない。
16
16
 

4

編集

2016/12/01 21:42

投稿

duck
duck

スコア28

test CHANGED
@@ -1 +1 @@
1
- 署名検証:HTTP_X_LINE_SIGNATUREには何を記入すればいい
1
+ Ruby 署名検証のやり方
test CHANGED
@@ -10,11 +10,9 @@
10
10
 
11
11
 
12
12
 
13
- サンプルコードsignature = request.env['HTTP_X_LINE_SIGNATURE']
13
+ サンプルコードを実行すると、「A http status of the response was '400 Bad Request'.」が返ってくる。
14
14
 
15
- のHTTP_X_LINE_SIGNATURE何を記入すればいのか分からない。
15
+ LINE Messaging APIドキュメントを読んだところ署名検証が必要らしいが、どのようコードに起こして実装すればいのか分からない。
16
-
17
- HTTP_X_LINE_SIGNATUREのまま実行すると、「A http status of the response was '400 Bad Request'.」が返ってくる。
18
16
 
19
17
 
20
18
 

3

タイトル変更

2016/12/01 21:34

投稿

duck
duck

スコア28

test CHANGED
@@ -1 +1 @@
1
- HTTP_X_LINE_SIGNATUREには何を記入すればいいのか
1
+ 署名検証:HTTP_X_LINE_SIGNATUREには何を記入すればいいのか
test CHANGED
File without changes

2

ドキュメントを追加

2016/12/01 21:23

投稿

duck
duck

スコア28

test CHANGED
File without changes
test CHANGED
@@ -104,13 +104,49 @@
104
104
 
105
105
 
106
106
 
107
- ###試したこと
107
+ ###APIのドキュメント
108
108
 
109
+
110
+
111
+ リクエストの送信元がLINEであることを確認するために署名検証を行わなくてはなりません。
112
+
113
+ 各リクエストには X-Line-Signature ヘッダが付与されています。
114
+
115
+ X-Line-Signature ヘッダの値と、Request Body と Channel Secret から計算した Signature が同じものであることをリクエストごとに 必ず検証してください。
116
+
117
+
118
+
119
+ 検証は以下の手順で行います。
120
+
121
+
122
+
123
+ Channel Secretを秘密鍵として、HMAC-SHA256アルゴリズムによりRequest Bodyのダイジェスト値を得る。
124
+
125
+ ダイジェスト値をBASE64エンコードした文字列が、Request Headerに付与されたSignatureと一致することを確認する。
126
+
127
+
128
+
129
+ ```CHANNEL_SECRET = ... # Channel Secret string
130
+
109
- Googleで調べたところ、シグネチャや認証という単語が引っ掛かったが、具体的にどうやってシグネチャを生成するのか
131
+ http_request_body = request.raw_post # Request body string
132
+
133
+ hash = OpenSSL::HMAC::digest(OpenSSL::Digest::SHA256.new, CHANNEL_SECRET, http_request_body)
134
+
135
+ signature = Base64.strict_encode64(hash)
136
+
137
+ # Compare X-Line-Signature request header string and the signature
138
+
139
+ ```
110
140
 
111
141
 
112
142
 
113
143
  ###補足情報(言語/FW/ツール等のバージョンなど)
144
+
145
+ ドキュメントURL
146
+
147
+ [https://devdocs.line.me/ja/#webhook](https://devdocs.line.me/ja/#webhook)
148
+
149
+
114
150
 
115
151
  サンプルコードのURL
116
152
 

1

URLを追加

2016/12/01 21:22

投稿

duck
duck

スコア28

test CHANGED
File without changes
test CHANGED
@@ -112,4 +112,10 @@
112
112
 
113
113
  ###補足情報(言語/FW/ツール等のバージョンなど)
114
114
 
115
+ サンプルコードのURL
116
+
117
+ [https://github.com/line/line-bot-sdk-ruby](https://github.com/line/line-bot-sdk-ruby)
118
+
119
+
120
+
115
121
  Herokuをつかっています。