My customers are asking for an Integration to update some of their data in Salesforce Marketing Cloud from an application that I own. They want some properties from the users in my application to be added as "data extensions" to their Contacts in SFMC.
My question is: what is the best way to authenticate the user? I've made a similar Integration for Facebook Ads and Google Ads where I upload the users as an audience. This was a simple OAuth flow.
I thought SFMC Auth would be the same. I followed this tutorial: https://developer.salesforce.com/docs/atlas.en-us.mc-app-development.meta/mc-app-development/integration-app-auth-code.htm. It looks all correct, until you click on https://developer.salesforce.com/docs/atlas.en-us.mc-app-development.meta/mc-app-development/access-token-app.htm.
I was under the impression I would make a request for an
access_token by providing an
authorization_code with the
client_secret from the OAuth 2.0 API I registered in my own SFMC account. This seems to be true, but it says in the response, we get back:
rest_instance_url string Your tenant’s REST base URL for making REST API calls. soap_instance_url string Your tenant’s SOAP base URL for making SOAP API calls.
This seems like it is returning my OWN tenant base URL. Don't I want the end-user's base URL, so I can make calls on their behalf?
Are API Integrations created in an SFMC account only for use by members of that SFMC account? How do I make an application that allows me to make calls for a user in a different SFMC tenant, how I thought OAuth was supposed to work?
Thanks in advance for any help!
Edit: I forgot to add that an alternative we are considering is making a server-to-server Integration and asking the end user for a
client_secret after they create an Installed Package in their own account. Is this the right way to go?