ボットを搭載したSlackアプリを作成しました。私はチャンネル:履歴、チャンネル:読み取り、チャンネル:書き込みを自分の権限スコープの下で選択し、スコープも渡しました
"scope":"bot channel:history channel:read channel:write"
(Pythonを使用して)私のoauth2検証を行っている間に、スコープが
"scope":"identify,bot,channels:history,channels:read,channels:write"
クライアントとボットのアクセストークンとともに。
次に、ボットが招待されているチャネルの履歴を取得するためにAPI呼び出しを行うと、
{
ok: false,
error: 'missing_scope',
needed: 'channels:history',
provided: 'identify,bot:basic'
}
誰かが私がどこで間違っているのか教えてもらえますか?どのようにすればよいのですか[〜#〜] provide [〜#〜]私のAPI呼び出しのchannels:historyスコープ。これは本当に私を狂わせています。ボットトークン(xoxb-xxxx)ではなく、クライアントアクセストークン(xoxp-xxxx)を使用する必要がありますか?
ありがとう!
将来この問題を抱えている人々のために;
統合されたボットはSlack APIに完全にアクセスできますが、Slackアプリのボットは一般的に使用されるため、そうではありません。 oauth2が正常に完了すると、user access token
とbot token
の2つのトークンが取得されます。 user token
は任意のチャネル/グループから履歴を読み取るために使用され、bot access token
はそれらに書き込むために使用されます。つまり、アプリで常にuser token
からbot access token
に切り替える必要があります。
また、ボットユーザーは、接続するプライベートチャネルのメンバーである必要があります。
お役に立てば幸いです。
Ps、これについてより良い方法が見つかった場合は、以下でお気軽に回答してください。
言及しなかったため:Slackアプリの管理ページの[Oauth&Permission Scopes]で必要なすべてのスコープを指定する必要もあります。