Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

user_scope #1

Open
chasers opened this issue Nov 30, 2020 · 3 comments
Open

user_scope #1

chasers opened this issue Nov 30, 2020 · 3 comments

Comments

@chasers
Copy link

chasers commented Nov 30, 2020

Hey thanks for this!!

I can't seem to get user_scope to be generated when set via the config or when passing it via a url param. It's always null. I'm probably doing something wrong, but it looks like you have default_users_scope in the module doc and default_user_scope here: https://github.com/jsmestad/ueberauth_slack_v2/blob/master/lib/ueberauth/strategy/slack_v2.ex#L34

@jsmestad
Copy link
Owner

@chasers what do you have in your config?

For example here one from a project of mine:

config :ueberauth, Ueberauth,
  providers: [
    slack:
      {Ueberauth.Strategy.SlackV2,
       [
         default_scope: "",
         default_user_scope:
           Enum.join(
             [
               "chat:write",
               "users.profile:write",
               "users:read",
               "users:write"
             ],
             ","
           ),
         callback_url: Environment.get("SLACK_CALLBACK_URL")
       ]}
  ]

@chasers
Copy link
Author

chasers commented Dec 1, 2020

No need to support me on this really, it all works if I handroll the auth url ... it looks like it's generating the scopes correctly. Every time I touch oauth stuff I need to relearn it 😭. TL;DR when I use Ueberauth to generate the auth url it tries to auth the bot in the callback phase.

I'm trying to reimpliment the Slack sign in stuff...

When using Ueberauth to generate the auth urls I'm redirected to:

https://slack.com/oauth/v2/authorize?client_id=689539426144.1542831573764&redirect_uri=http%3A%2F%2Flocalhost%3A4000%2Fauth%2Fslack%2Fcallback&response_type=code&scope=app_mentions%3Aread&user_scopes=identity.basic%2Cidentity.avatar%2Cidentity.email%2Cidentity.team

So that actually seems to generate the correct scopes ... apologies. But it looks like it's trying to authenticate the bot and not the user because I get this from the callback phase.

%Ueberauth.Auth{
  credentials: %Ueberauth.Auth.Credentials{
    expires: false,
    expires_at: nil,
    other: %{
      has_2fa: nil,
      is_admin: false,
      is_owner: false,
      is_primary_owner: false,
      is_restricted: false,
      is_ultra_restricted: false,
      team: "Logflare",
      team_domain: nil,
      team_id: "TL9FVCJ48",
      team_url: "https://logflare.slack.com/",
      user: "logflare_staging",
      user_id: "U01FSS3ADM0"
    },
    refresh_token: nil,
    scopes: ["users:read", "incoming-webhook", "commands", "app_mentions:read"],
    secret: nil,
    token: "xoxb-689539426144-1536887353714-VJqwaM8chs6gLNrXexpTS5Sr",
    token_type: "bot"
  }

But when I roll my own authorize url it all works:

https://slack.com/oauth/v2/authorize?client_id=#{Application.get_env(:ueberauth, Ueberauth.Strategy.SlackV2.OAuth)[:client_id]}&install_redirect=update-to-granular-scopes&scope=&user_scope=identity.basic,identity.avatar,identity.email,identity.team&redirect_uri=#{LogflareWeb.Endpoint.url() <> "/auth/slack/callback"}&state=

My config looks like this:

config :ueberauth, Ueberauth,
  providers: [
    github: {Ueberauth.Strategy.Github, [default_scope: "user:email"]},
    google: {Ueberauth.Strategy.Google, []},
    slack:
      {Ueberauth.Strategy.SlackV2,
       [
         default_scope: "app_mentions:read",
         default_user_scope: "identity.basic,identity.avatar,identity.email,identity.team"
       ]}
  ],
  json_library: Jason

@jsmestad
Copy link
Owner

jsmestad commented Dec 1, 2020

@chasers let me know if you hit any other issues. I have some commits on master to try and iron out how to parse the new Slack v2 data in all cases. I am sure there are a few changes to the OAuth::Client-related code that are unhandled.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants