mixpanel-python icon indicating copy to clipboard operation
mixpanel-python copied to clipboard

`import_data` does not work with Service Accounts due to missing `project_id`

Open beheh opened this issue 3 years ago • 2 comments

While testing out service accounts, I kept getting Unauthorized, invalid project secret. See docs for more information: https://developer.mixpanel.com/reference/authentication#project-secret raised from the SDK

I ended up tracing this to the SDK never sending the project_id GET paramter to the import. This paramter is marked as required in the documentation.

Trying the following curl command:

curl --request POST \
  --url 'https://api.mixpanel.com/import?strict=1' \
  --header 'Accept: application/json' \
  --header 'Authorization: Basic <omitted>' \
  --header 'Content-Type: application/json' \
  --data '[{"event":"test"}]'

vs.

curl --request POST \
  --url 'https://api.mixpanel.com/import?strict=1&project_id=<omitted>' \
  --header 'Accept: application/json' \
  --header 'Authorization: Basic <omitted>' \
  --header 'Content-Type: application/json' \
  --data '[{"event":"test"}]'

...with credentials and with/without a project_id confirms the problem.

beheh avatar Jul 08 '22 11:07 beheh

In fact: service accounts seem unsupported entirely by this SDK. For example, it does not appear possible to supply a api_secret=<service_account>:<secret> to this SDK, due to the project_id omission and the fact that an additional colon is appended to that string as part of the HTTP Basic auth assembly.

beheh avatar Jul 08 '22 13:07 beheh

@beheh that is correct, this SDK does not currently support Service Accounts. You can use Service Accounts to import data with our Python utilities library, though: https://github.com/mixpanel/mixpanel-utils

jaredmixpanel avatar Jul 25 '22 21:07 jaredmixpanel