如何让用户在使用 Slack 登录时选择他们的工作区?

时间:2021-01-03 08:54:30

标签: reactjs django slack slack-api

我在使用 Slack 登录以按照我希望的方式工作时遇到了一些问题。具体来说,我正在寻求构建一个平台,人们可以将其用于他们的 Slack 工作区,并且根据他们登录的工作区,会显示不同的内容(在这种情况下,保存的 Slack 帖子)。

我已按照 Slack 提供的教程将使用 Slack 登录到我的网站。我用

https://slack.com/oauth/v2/authorize?user_scope=identity.basic,identity.email,identity.team,identity.avatar&client_id

触发进程。我的重定向 URI 将代码参数传递到这里

@csrf_exempt
@api_view(['GET', 'POST'])
def auth(request):
    code = request.data['code']
    url = 'https://slack.com/api/oauth.v2.access?client_id={}&client_secret={}&code={}'.format(SLACK_CLIENT_ID, SLACK_CLIENT_SECRET, code)
    response = requests.get(url)
    response_dict = json.loads(response.text)
    print(response_dict)
    if response_dict.get('ok'):
        user_id = response_dict['authed_user']['id']
        team_id = response_dict['team']['id']
        access_token = response_dict['authed_user']['access_token']
        client = WebClient(token=access_token)
        user_profile = client.users_identity()
        email = user_profile.get('user').get('email')
        display_name = user_profile.get('user').get('name')
        image = user_profile.get('user').get('image_48')

        userObject = User.objects.get_or_create(username= user_id + team_id, user_id=user_id, team_id=team_id, email=email)[0]
        userObject.first_name=display_name
        userObject.last_name=''
        userObject.image=image
        userObject.save()

        response_dict['model_id'] = userObject.id

        return Response(json.dumps(response_dict), status=status.HTTP_200_OK)
    else:
        return Response(None, status=status.HTTP_400_BAD_REQUEST)

我有几个问题。

  1. 如何让用户在单击“使用 Slack 登录”按钮登录到他们想要的任何 Slack 工作区?目前它默认只有一个工作区,我不知道如何更改。
  2. 当我在 Slack API URL(即 babeljs.slack.com/oath...)中手动输入不同的工作区时,整个过程似乎被完全跳过,并且在此示例中,我获得了与 babeljs 工作区不同的工作区的团队 ID。关于为什么会这样的任何线索?

主要是,我正在寻找一种让人们访问我的网站的方法,因为他们有自己独特的 Slack 工作区,鉴于 Slack 似乎对自动重定向有多么挑剔,我无法想出一种方法可以让他们轻松访问。

感谢任何帮助!

0 个答案:

没有答案