Q&A

LINE Login チャネルと SDK 2.1 を使って liff.sendMessages を実行するとエラー

もともと Messaging API チャネルで作っていたウェブの LIFF アプリを LINE Login チャネルに作り変えようとしている中でエラーが発生して困っています。なお LIFF SDK のバージョンは 2.1 をどちらも使っています。

もともと Messaging API チャネルを使っていた際には、SDK で以下のような処理を行っていました: (1) LINE トークルーム内で LIFF URL をタップし、LIFF アプリを起動 (2) ウェブアプリ内で SDK 2.1 の JavaScript をロード (3) 画面ロード時に liffId を指定して liff.init( { liffId: 'liffId' } ) を実行して初期化 (4) liff.sendMessages() を実行して、元のトークルームにメッセージ送信

Messaging API チャネル利用時には (1) ~ (4) まですべて成功していました(&今も成功します)。

全く同じ処理を新たに LINE Login チャネルで定義した LIFF アプリで実行すると、(1) ~ (3) までは成功するのですが、(4) を実行するとエラーとなります。

ちなみに (4) 部分のコードは以下のような内容です:

liff.sendMessages([
  data
]).then( () => {
  alert( '送信されました' );
  liff.closeWindow();
}).catch( ( err ) => {
  alert( JSON.stringify( err, null, 2 ) );
});

そして Messaging API チャネル利用時には(成功するので) "送信されました" というメッセージが表示されて LIFF アプリがクローズするのですが、LINE Login チャネルを利用している場合だと(エラーとなって)以下のようなメッセージが表示されます: { line: 2, column: 5870, sourceURL: 'https://static.line-scdn.net/liff/edge/2.1/sdk.js' }

念の為 sourceURL の該当部分も見てみたのですが、さすがに理解が難しく、どのような原因でエラーが発生しているのかがわかりませんでした。

エラーの原因が分かる方はいらっしゃいますでしょうか? またはそもそもの話ですが、LINE Login チャネルの LIFF アプリ(SDK 2.1)で sendMessages に成功している方はいらっしゃるのでしょうか?

  • 0
  • 2
  • 2545
  • twitter facebook

Ally さん、回答ありがとうございます。いただいたアドバイスによって無事に sendMessages が処理できるようになりました。

・・・しっかしわかりにくい所に設定が隠れてますね(苦笑)。なぜわざわざ chat_message.write だけこんな所に・・・ (^^;

ともあれ無事に解決しました、ありがとうございました!

  • 0

LINE Developers > LIFFの設定 > Scopeで、sendMessage() に必要なScope chat_message.write をONにしていますか? もししてない場合は、分かりにくいですが、Scope画面下の > をクリックすると隠れているので、そこでOnにしてみてください

  • 2
Are you sure? question.vm