How to detect if an app has been removed from a team? - slack-api

How do I detect if a team has removed my application? Slack doesn't seem to emit an event in such circumstance. Should I just periodically send a request to the https://api.slack.com/methods/auth.test endpoint with the oauth tokens I got when they installed the app?

Related

Slack Oauth - how do I force my slack app to receive messages in a certain channel?

I'm building a Slack app and when I install the app in my workspace, during the Oauth flow it asks me what channel I want messages sent to. I then have to choose among all my channels in a select menu (one of which is my slack app) where to receive messages.
When I install something like the Jira Cloud Slack app, it does not ask me what channel I want to use to receive messages, it just installs the app and I receive messages in the Jira Cloud channel. I'd like to try to set up my slack app so the user does not have to select a channel, but instead the messages go automatically to the app channel (like Jira).
Does anyone know what settings (Oauth scopes maybe?) I need to make this happen?
Are you using Slack's incoming webhooks? Webhooks will require you to specify a channel, but using Sign in with Slack for auth (or just authenticating with their OAuth v2) does not. Also make sure that you're using Slack's most recent version of apps that include granular scopes -- not sure if the legacy apps work like this.

MS Teams - Sending Messages to Users from External App

The organization that I work for previously used Slack as our collaboration tool. With Slack, I was able to register an app in the workspace and use the provided access tokens to invoke the API to send a message to a user from our external web application. It was very straightforward. There was no intermediate app that needed to be coded to enable this messaging.
Recently, we've transitioned from Slack to MS Teams, and in looking over the Graph API documentation, there does not currently appear to be a way to proactively send a message from an external application to a user. The available permissions for the chatMessage endpoint indicate the availability of only a delegated permission to send a message on behalf of a specific user; no permission exists to send a message on behalf of an external application.
Is it possible to use the Graph API to directly send a message from an external application to a user? Or must a bot application be created in order to achieve this?
It must be a bot application to achieve above mentioned requirement. ChatMessage endpoint works to send a message on behalf of user only.

Implement Slack authorisation via OAuth 2.0 in Apple Watch App

I need to integrate the Slack API in the Apple Watch Application. I need to authorize the user by his slack email and password. But looking into the Slack API docs, I understood we can implement OAuth 2.0 authorization. How can I implement that slack authorization in the Apple Watch application?
Make the user authenticate with Slack via iOS mobile application and store the OAuth tokens (Including the refresh token) in a shared resource group so the Apple Watch application can access the information. If the user tries to use the Apple Watch app when the tokens are not stored yet; Alert the user to open the mobile application and login with Slack if they have not done so already.
I recommend putting any Slack API call functions in a shared local framework so both the mobile application and any other extensions (In case you want to expand to notification center widget etc) can use them in the future.

Getting tokens for all users in a workspace

I have been making a slack app for the users on my workspace. It is a sidebar that adds slack messaging functionality to our website, so that we don't have to leave the site to see our slack messages. I am having trouble trying to get bearer tokens for each user.
What I have been doing so far is following the Slack OAuth 2.0 Authentication flow in order to receive tokens for users. This worked for me in testing and it works for some of our users currently. However, some users see something completely different.
Instead of asking them for permission to use their slack profile, the slack.com/oauth/authorize is telling them they can't install the app because it isn't listed in the slack directory. However, this page should not be installing the app to the workspace. It is already installed. It should just be asking for their permission to use their profile.
Am I using the wrong page? Did I miss something I need to do?
The Oauth process in Slack is not only used to get an access token, but also always is regarded as installation process for the respective Slack app. So your users are basically (re-) installing your Slack app each time they run through the Slack Oauth process. This is the standard behavior and can not be changed.
If you want to continue using this process you can simple enable installation for your Slack app on the workspace for all users (click on approve on the app management page of your workspace for this particular app) and then your users will no longer get the error message. You may also need to enable distribution of your Slack app on the app management page.
Btw. installing the same Slack app by multiple users is the default approach for getting access tokens for individual users. Slack calls those additional installations "configurations" and you can see them listed on the app ages for your workspace.
Note that Slack access tokens obtained from the Oauth process do not expire. So you only have to let the user install your Slack app once and then store the Slack access token for the next time.

Create slack channel using slack app

I have a private slack application (developed by user 'X' from team 'XT')
I have a web server knows how to complete the Oauth process and generate tokens per teams
Now- as a user Y from team YT I am installing the slack app on my YT team and get a token,
using that token I perform API call for channels.create ,
I got into my team (aka YT) and indeed I see that the channel was created ,
BUT
it's written that the channel was created by the specific user that installed the slack app, meaning user Y.
I would expect to see that channel was created by the application not by specific user.
Is there any way to do that ?
thought about using bot token (got from the app instllation) but channels.create cannot be performed by a bot
I am afraid there is no solution for your problem. Every "write" action on Slack has to be attached to either a bot or a user. And since channels.create can not be used by a bot, it has to be a user.
The master access token of your Slack app is linked to the user that installed it, which is why that user will appear as creator of the channel when you use it.
I use a generic admin user ("slackadmin") for that purpose on my own Slack, but that will of course not work as general solution for each Slack team that want to install your app from the Slack App Directory.

Resources