34601


お世話になっております。

AWS Lambdaを利用して、Node.jsでLINE APIをたたいているのですが、  
ステータスコード 403 が出てしまいます。

何か解決策はありますでしょうか。

ソースが下記になります。

[code]

    var https = require('https');
    //line  url
    var url = "https://api.line.me/v2/bot/message/reply";
    
    exports.handler = function(event, context) {
    
    var msg = event.body;
    var jsonTest = JSON.parse(event.body).events;
    
    // Request Body
    var request_body = JSON.stringify({
      "replyToken": "\"" + jsonTest[0].replyToken + "\"",
      "messages":[
                {
                    "type":"text",
                    "text":"test"
                }
            ]
    });
    
    console.log('通過しました２。');
    
    var opts = {
        host: 'api.line.me',
        path: '/v2/bot/message/reply',
        url: url,
        headers: {
            "Content-type": "application/json; charset=UTF-8",
            "Content-Length": request_body.length,
            "Authorization": "Bearer {LINE の ChannelToken}"
        },
        method: 'POST'
    };
    
    // APIリクエスト
    var req = https.request(opts, function(res){
        console.log('通過しましたリクエスト。');
        res.on('request_body', function (chunk) {
            console.log('リクエスト成功。');
            console.log(res.statusCode + chunk.toString());
        });
        req.on('error', function(err) {
            console.log('リクエスト失敗');
            console.log('ERROR: ' + err.message);
        });
    
        console.log(res.statusCode);
    
    });
    
    
    console.log('通過しました３。');
    req.write(request_body);
    console.log('通過しました４。');
    req.end();
    console.log('通過しました５。');
    };
    
[/code]


CC BY-SA 3.0
2017-05-10T01:26:57.923
34595
2017-08-06T01:27:48.523
2017-08-06T01:27:48.523
19110
22519
question
javascript node.js aws aws-lambda
AWS LambdaからLineAPIの利用


> "replyToken": "\"" + jsonTest[0].replyToken + "\"",

この部分がおかしいです。

[code]

    "replyToken": jsonTest[0].replyToken
    
[/code]

とダブルクオーテーションでくくってやらなくてもJSON.stringifyがうまくやってくれます。  
エスケープしたダブルクオーテーションを含めてしまうと、余計なものがついてしまい無効なtokenが生成されてしまいます。

[code]

    var replyToken = "aaabbbccc"
    var request_body = JSON.stringify({
      "replyToken": "\"" + replyToken + "\"",
      "messages":[
                {
                    "type":"text",
                    "text":"test"
                }
            ]
    });
    
    console.log(request_body)
[/code]

<https://devdocs.line.me/ja/#common-specifications>

> 403 Forbidden APIの利用権限がありません。ご契約中のプランやアカウントに付与された権限を確認してください。


CC BY-SA 3.0
2017-05-10T07:48:38.317
34601
2017-05-10T07:48:38.317
15705
34595
answer