###line-bot-sdk-phpを使用してLineBotを作成しているが返信が帰ってこない
実装環境
- CentOS8
- PHP7.3
現状
デバックで送信されたメッセージと、レスポンス内容を取得したところレスポンスの際にアクセストークンの認証に失敗しているとの記述があるのですが、タイトルにも書いているのですがアクセストークンとシークレットトークンは確認したところあっており、サーバーもwebhookとして正常に登録できている状態です。アクセストークン、シークレットトークンの再発行も行ったのですが現状が変わりませんでした。
アクセストークンがあっているのに認証されない原因がわからず困っています。どなたかご教授いただけると幸いです。
また気になった点として、メッセージを送信した時間とレスポンスの時間がなぜか噛み合わない状態になってしまっています。
デバックの内容
LINE\LINEBot\Event\MessageEvent\TextMessage Object ( [emojis:LINE\LINEBot\Event\MessageEvent\TextMessage:private] => [mentionees:LINE\LINEBot\Event\MessageEvent\TextMessage:private] => [message:protected] => Array ( [type] => text [id] => 13992700300144 [text] => や ) [event:protected] => Array ( [type] => message [message] => Array ( [type] => text [id] => 13992700300144 [text] => や ) [timestamp] => 1620093353424 [source] => Array ( [type] => user [userId] => U23d1c181167c4cf898db12e3e6555ac6 ) [replyToken] => 80ff35c4c5da441d974ee71350c3ad93 [mode] => active ) ) 2021/05/04 10:55:52 //メッセージを送った時間 LINE\LINEBot\Response Object ( [httpStatus:LINE\LINEBot\Response:private] => 401 [body:LINE\LINEBot\Response:private] => {"message":"Authentication failed. Confirm that the access token in the authorization header is valid."} [headers:LINE\LINEBot\Response:private] => Array ( [Server] => openresty [Date] => Tue, 04 May 2021 01:55:53 GMT [Content-Type] => application/json [Transfer-Encoding] => chunked [Connection] => keep-alive [x-line-request-id] => 058db0b0-02be-4883-b5c8-67e45f141562 [x-content-type-options] => nosniff [x-xss-protection] => 1; mode=block [cache-control] => no-cache, no-store, max-age=0, must-revalidate [pragma] => no-cache [expires] => 0 [x-frame-options] => DENY [www-authenticate] => Bearer error="invalid_token", error_description="invalid token" )
コード
<?php require_once('vendor/autoload.php'); use LINE\LINEBot\HTTPClient\CurlHTTPClient; use LINE\LINEBot; use LINE\LINEBot\Constant\HTTPHeader; //先ほど取得したチャネルシークレットとチャネルアクセストークンを以下の変数にセット $channel_access_token = 'xxxxxx'; $channel_secret = 'xxxxxx'; $http_client = new CurlHTTPClient($channel_access_token); $bot = new LINEBot($http_client, ['channelSecret' => $channel_secret]); $signature = $_SERVER['HTTP_' . HTTPHeader::LINE_SIGNATURE]; $request_body = file_get_contents('php://input'); $events = $bot->parseEventRequest($request_body, $signature); $event = $events[0]; $events = $bot->parseEventRequest($request_body, $signature); $reply_token = $event->getReplyToken(); $reply_text = $event->getText(); $bot->replyText($reply_token, $reply_text); error_log(print_r($event, true) . "\n", 3, "debug.log"); error_log( date("Y/m/d H:i:s") . "\n", 3, "debug.log"); error_log(print_r($bot->replyText($reply_token, $reply_text), true) . "\n", 3, "debug.log");
あなたの回答
tips
プレビュー