Q&A

プロバイダーの違いによってprofile取得の可否に差が生まれます。

前提・実現したいこと

プロバイダで作成したmessaging apiを使用して、line@に登録しているuserのidを指定してprofile情報を取得する時、同じコードでも取得できる場合とできない場合があります。 チャネルアクセストークンも正しく、botモードになっていますので、以下のコードで取得する場合問題ないはずですが、404レスポンスで返ってきます。

発生している問題・エラーメッセージ

statusCode: 404, statusMessage: 'Not Found'

該当のソースコード

import { Client } from '@line/bot-sdk'; let config = { channelAccessToken: "xxxxxxxx" }; const client = new Client(config); const response = await client.getProfile("xxxxxx");

試したこと

https://developers.line.biz/ja/reference/messaging-api/#get-profile こちらでuseridとAuthorizationを設定しても同様に取得できません。

チャネルアクセストークンの違いのみで取得できる or 取得できないが変わっているので、そこが問題なのは間違い無いと思いますが、友達登録もuseridでしている状態で、botモードであるのに取得できない理由がわかりません。

補足情報(FW/ツールのバージョンなど)

"@line/bot-sdk": "^7.4.0", "@line/liff": "2.18.2",

  • 0
  • 3
  • 871
  • twitter facebook

バグや障害じゃなくないですか?

  • 0

なるほど、useridはプロバイダー毎に変わるので、同じidを使用してもプロバイダーが違えば取得できないということですね。 それですとlステップのように複数業者が登録する場合は、業者毎にlineログインを作成して設定しないといけないということですね。

ご回答いただきありがとうございます。

別の質問になってしまい申し訳ないのですが、その場合lineログインに対してliffアプリを設定する時にapiで自動でliffアプリをチャネルに追加することは可能でしょうか? https://developers.line.biz/ja/docs/liff/registering-liff-apps/#registering-liff-app

  • 0

(もしかしたら違う原因かもしれないですが) 2つのChannelでそれぞれアクセストークンを発行しているとしたら、 同じユーザでもChannelごとに取得できるUserIdは変わってしまうので、 Channel Aで取得したUserIdを、Channel Bで使うとChannel B側では404 Not Foundになるかと思います。

  • 2
本当によろしいですか? question.vm