python HEROKU slackbot作成 invalid_auth エラー
slackbotを作成中
下記を参考にさせて頂いた
https://www.virtual-surfer.com/entry/2018/04/05/190000
■事象
slackのAPIトークンを設定し、ローカルで実行するとslackbotが起動するが、
HEROKUにデプロイし、HEROKUのサイト上でpbotを実行するとinvalid_authになる
その後、再度ローカルで実行しても同様にinvalid_authとなる
>python run.py
start slackbot
Traceback (most recent call last):
File "run.py", line 9, in <module>
main()
File "run.py", line 4, in main
bot = Bot()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slackbot\bot.py", line 27, in __init__
'BOT_EMOJI') else None
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slackbot\slackclient.py", line 40, in __init__
self.rtm_connect()
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slackbot\slackclient.py", line 43, in rtm_connect
reply = self.webapi.rtm.start().body
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slacker\__init__.py", line 822, in start
'mpim_aware': int(mpim_aware),
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slacker\__init__.py", line 120, in get
api, **kwargs
File "C:\Users\xxx\AppData\Local\Programs\Python\Python37\lib\site-packages\slacker\__init__.py", line 102, in _request
raise Error(response.error)
slacker.Error: invalid_auth
■invalid_authについて確認
https://api.slack.com/methods/auth.test
invalid_auth
Some aspect of authentication cannot be validated. Either the provided token is invalid or the request originates from an IP address disallowed from making the request.
(翻訳こんにゃく結果)
認証の一部の側面を検証できません。 提供されたトークンが無効であるか、要求が、要求の作成を許可されていないIPアドレスから発信されています。
■原因
ローカルでテストしたAPIトークンを使用して
HEROKUでslackbotを起動しようとすると、ローカルとは別IPからの接続となるため、
slackの認証エラーとなっていると思われる。
■対策
HEROKUにデプロイしてslackbotを起動する際は
改めてAPIトークンを再生成したものを使用する。
■修正方法メモ
APIトークンの取得は直書きではなく、
HEROKUのSetting>Config Varsから取得できるようにした
slackbot_settings.py
import os
API_TOKEN = os.environ["AAAAA"]
HEROKUのSetting>Config Vars
key:AAAAA
■その他メモ
HEROKUのOverview>Dyno formationでpbot(Procfileに書いたコード)をONにすると、pbotが動く