web-dev-qa-db-ja.com

APIリクエストの実行中にスラックボットスコープが見つからない

ボットを搭載した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)を使用する必要がありますか?

ありがとう!

13
user7278236

将来この問題を抱えている人々のために;

統合されたボットはSlack APIに完全にアクセスできますが、Slackアプリのボットは一般的に使用されるため、そうではありません。 oauth2が正常に完了すると、user access tokenbot tokenの2つのトークンが取得されます。 user tokenは任意のチャネル/グループから履歴を読み取るために使用され、bot access tokenはそれらに書き込むために使用されます。つまり、アプリで常にuser tokenからbot access tokenに切り替える必要があります。

enter image description here

また、ボットユーザーは、接続するプライベートチャネルのメンバーである必要があります。

お役に立てば幸いです。

Ps、これについてより良い方法が見つかった場合は、以下でお気軽に回答してください。

26
user7278236

言及しなかったため:Slackアプリの管理ページの[Oauth&Permission Scopes]で必要なすべてのスコープを指定する必要もあります。

2
Erik Kalkoken