Ok, so I’ve pretty much scoured through the whole docs and have tested multiple set ups but am have run into a wall of exhaustion, so i’m desperate for help! 
Goal:
- iOS app where user authenticates via Firebase OAuth2 Twitter Sign in flow (google firebase ios twitter sign in flow)
- Scopes include “offline_access”.
- Make requests on behalf of the user (via our backend), such as Bookmark Lookup, described here.
What’s working:
- The iOS twitter sign in flow works, and I am able to get back what appears to be an oauth token and oauth secret. I then save these on our backend.
What’s not working:
- I attempt to make the request for the bookmark, but get hit with either 403 codes stating we must make the request in OAuth2 User Context, or 401 codes stating “Unauthorized”. The errors depend on my approach (since i’ve tried several ways and none work).
Now, it very clearly states in Step #4, “OAuth 2.0 Making requests on behalf of users” that once we get a token from the user, we are “ready to connect” using OAuth 2.0, and we can make the request as a Bearer Token request:
You are now ready to connect to the endpoints using OAuth 2.0. To do so, you will request the API as you would using Bearer Token authentication. Instead of passing your Bearer Token, you’ll want to use the access token you generated in the last step. As a response, you should see the appropriate payload corresponding to the endpoint you are requesting. This request is the same for both public and confidential clients.
From my understanding, simply using the returned “access token” as a bearer token in requests should work, and act as the OAuth 2.0 “user context” requests, but I can confirm this DOES NOT WORK.
Additionally, I have tried (and have successfully) generated a “Bearer Token” from the initial oauth token + secret returned via the iOS sign in flow. I then also tried using this as the bearer token for the requests, but am getting “Authenticating with OAuth 2.0 Application-Only is forbidden for this endpoint” 403 errors.
From what it looks like, as long as you make a bearer token request, the API identifies it as an “application only request”, no matter what the bearer token is.
Additionally, for helping purposes - our app is Elevated Access approved, and set up as a “Native” app (not confidential) in the Authentication portal.
I was really excited about integrating twitter with out app but this has been a very confusing process, so appreciate any help on the matter.
TY 