How to get a query string from a custom URL scheme from Safari?
I am implementing an oAuth based app, and part of the process is getting the Oauth Verifier from Safari comming from a Custom URL handle.
So Safari sends the following request to my app:
myapp://?oauth_token=xxxx&oauth_verifier=YYY
How can a get this query strings when my app starts?
1 Answer
-
The oauth_callback end-point must be an Internet Url which is called by the remote service, it does not communicate with the client. To solve this use oauth_callback=oob (out-of-band): the service will provide the user with a pin that represents the oauth_verifier.
With this library that I wrote, you can get it running in a few minutes, just 10 lines of code with the OAuth Adapter:
var oAuthAdapter = new OAuthAdapter( '<your-consumer-secret>', '<your-consumer-key>', 'HMAC-SHA1'); // load the access token for the service (if previously saved) oAuthAdapter.loadAccessToken('twitter'); oAuthAdapter.send('https://api.twitter.com/1/statuses/update.json', [['status', 'hey @ziodave, I successfully tested the #oauth adapter with #twitter and @appcelerator #titanium!']], 'Twitter', 'Published.', 'Not published.'); // if the client is not authorized, ask for authorization. the previous tweet will be sent automatically after authorization if (oAuthAdapter.isAuthorized() == false) { // this function will be called as soon as the application is authorized var receivePin = function() { // get the access token with the provided pin/oauth_verifier oAuthAdapter.getAccessToken('http://twitter.com/oauth/access_token'); // save the access token oAuthAdapter.saveAccessToken('twitter'); }; // show the authorization UI and call back the receive PIN function oAuthAdapter.showAuthorizeUI('http://twitter.com/oauth/authorize?oauth_token=' + oAuthAdapter.getRequestToken('http://twitter.com/oauth/request_token', [['oauth_callback', 'oob']]), receivePin, PinFinder.twitter); }