I use Oauth via Microsoft and it has worked fine for a while, then a couple of weeks ago (can't remember exactly when) i got some tweet or something from someone saying that they had problems signing in with MS Oauth.
The error i get is this.
https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The+provided+value+for+the+input+parameter+'redirect_uri'+is+not+valid.+The+expected+value+is+'https://login.live.com/oauth20_desktop.srf'+or+a+URL+which+matches+the+redirect+URI+registered+for+this+client+application.
The page actually says
"We're unable to complete your request
Microsoft account is experiencing technical problems. Please try again later."
And that indicates that they may actually have some issues but i think it's been like this for a while so i suspect it's just some generic error.
If i look at my request it says.
client_id=[MY CLIENT ID]&scope=wl.basic&response_type=code&redirect_uri=http://dev.ohso.se/login/ExternalLoginCallback/?provider=microsoft&sid=[some id]
I do get the same error on both my dev app and the production app i have setup.
This is how my callback URLs look like. I have tried to add URLS both with ExternalLoginCallback and externallogincallback but it doesn't seems to work. It looks like it's saved but it's gone when you return to the page.
Anyone know how to contat MS to at least report this bug and maybe also get hold of someone that can help debug my problem?
/Ola
OK, got it. The issue is with your request URL, remove / character from ..back/?provid.... Your request URL should be
client_id=[MY CLIENT ID]&scope=wl.basic&response_type=code&redirect_uri=http://dev.ohso.se/login/ExternalLoginCallback?provider=microsoft&sid=[some id]
and you can have any redirect URL #MS
http://dev.ohso.se/login/ExternalLoginCallback
or
http://dev.ohso.se/login/ExternalLoginCallback/
Hopefully someone here can help me fix this. I have been trying to make a web app for twitter, I have setup my application in the developer section of the twitter website.
I have set a callback url in both the developer section and in my code.
Where I get stuck is I get a 401 Unauthorized exception when requesting the Access Token. The app correctly sends the user to Twitter to ask for authorization, and then twitter send back to my callback URL successfully. My webapp then tries to request the access token and thats when the exceptions happens.
Below is an example of the API I call:
https://api.twitter.com/oauth/access_token?oauth_callback=http://www.example.com&oauth_consumer_key=6Rfhub7fDgCIazdg4dMECT6fJ&oauth_nonce=1721260&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1403965501&oauth_token=RCbfmuvzqFjJWHwCtWfNqEQ22uXFvv422AtHfBBYE&oauth_verifier=0QuTFy5SBmAl29VIWkBjfogJQ7GiSAoR2qIjokoii0&oauth_version=1.0&oauth_signature=JRzlH5Fiv5Ani3P+oXj5dxV58cA=
Any ideas where I might be going wrong?
Thanks
EDIT: Im using code from here http://www.aspdotnet-suresh.com/2012/05/add-twitter-login-authentication-to.html
and I changed it to use https:// not http://
Couldn't fix this issue. Using TweetSharp instead.
I'm having some trouble handling Facebook errors.
My app displays a page that tells users they've blocked the app when the login fails.
This page tells the users to go to settings>>privacy>>facebook and unblock the app.
I navigate to this page if the sessionStageChanged method contains an error.
I am however noticing a problem when a user changes their password, which will invalidate the iOS Facebook integration login, this will off course result in the error message not being correct anymore.
I've created another error page that tells the user that their password within ios integration has expired but I'm having trouble to figure out when I need to navigate to it.
-Both the different types of failure return Facebook error 2, which is a pretty generic error so I can't find what caused the problem from this error code.
-I've found another answer on here that used the [FBSession renewSystemCredentials] method but I am noticing that this will also return the ACAccountCredentialRenewResultFailed || Rejected error in both cases so this also won't work.
-I found the official documentation with this page: https://developers.facebook.com/docs/facebook-login/testing-your-login-flow/ but this does not have a solution only an explaination.
What should I do in this case?
How do I now when to navigate to the app blocked page and when to navigate to the password changed page?
I'm using Facebook SDK version: 3.10.0.
Thanks in advance!
Thanks for the comments.
After Ming Li's answer I found some stuff on this page: https://developers.facebook.com/docs/ios/errors
But after testing it in my app the Facebook error returned the same error for an invalid login.
I'm going to handle this by letting my user manually navigate trough the different types of solutions.
See the "Handling Errors" section of this page for strategies on how to notify users of different types of errors: https://developers.facebook.com/docs/graph-api/using-graph-api/#errors
Does anyone know how to fix this issue? I keep on getting this error from Twitter when I try to login on our app. This was happening since May 23, 2013.
Whoa there! The request token for this page is invalid. It may have
already been used, or expired because it is too old. Please go back to
the site or application that sent you here and try again; it was
probably just a mistake.
I also saw some users experiencing this issue in this link
Thanks a lot!
Just throwing it out there. Have you tried resetting the keys in your application management page? Or recreate your access token? (Unless the "Reset keys" option does this also).
I am using the ruby twitter gem and oauth to gain access to users twitter accounts. In my code, I have:
unless #user.twitter_authd?
oauth = Twitter::OAuth.new('token', 'secret')
session[:twitter_request_token] = oauth.request_token.token
session[:twitter_request_secret] = oauth.request_token.secret
#twitter_auth_url = oauth.request_token.authorize_url
end
where token and secret have my actual token and secret inserted. When I click on the link to the #twitter_auth_url, I am taken to twitter and asked to grant access. I click allow and then twitter redirects me to my callback URL http://www.mydomain.com/twitter_callback/?oauth_token=fmy2aMvnjVgaFrz37bJ4JuB8r5xN79gsgDQRG4BNY which then hits this code:
oauth = Twitter::OAuth.new('token', 'secret')
logger.info("session[:twitter_request_token] = #{session[:twitter_request_token]}")
logger.info("session[:twitter_request_secret] = #{session[:twitter_request_secret]}")
oauth.authorize_from_request(session[:twitter_request_token], session[:twitter_request_secret])
session[:twitter_request_token] = nil
session[:twitter_request_secret] = nil
#user.update_attributes({
:twitter_token => oauth.access_token.token,
:twitter_secret => oauth.access_token.secret,
})
redirect_to root_path
The twitter request token and secret are being set just fine. However I end up with an authorization error:
OAuth::Unauthorized in MainController#twitter_callback
401 Unauthorized
RAILS_ROOT: /Users/TAmoyal/Desktop/RoR_Projects/mls
Application Trace | Framework Trace | Full Trace
/Library/Ruby/Gems/1.8/gems/oauth-0.3.4/lib/oauth/consumer.rb:167:in `token_request'
/Library/Ruby/Gems/1.8/gems/oauth-0.3.4/lib/oauth/tokens/request_token.rb:14:in `get_access_token'
/Library/Ruby/Gems/1.8/gems/erwaller-twitter-0.6.13.1/lib/twitter/oauth.rb:29:in `authorize_from_request'
/Users/TAmoyal/Desktop/RoR_Projects/mls/app/controllers/main_controller.rb:70:in `twitter_callback'
The code is failing at this line:
oauth.authorize_from_request(session[:twitter_request_token], session[:twitter_request_secret])
when it tries to get an access token. You can see the source code of authorize_from_request here. I am not sure why this is happening. Anyone have ideas?
A bit late to the party but just ran into the same issue myself. I tracked the issue down to the setup of my OAuth app in Twitter. I had initially not specified a callback URL as I was unsure of it.
Once I had setup my rails app I went back to find Twitter had assumed I was a desktop application as I hadn't specified a callback URL. Once I changed this to website and entered a callback URL I stopped getting 400s.
If you're getting error 401 - OAuth::Unauthorized, make sure you edit the settings of your Twitter application as follows:
Application Type: Browser
Callback URL: http://127.0.0.1:3000/auth/twitter/callback
this is an issue about time synchronization of your system with twitter server.
Twitter doesn't allow localhost as part of a valid callback URL.
Instead use http://127.0.0.1:3000/auth/twitter/callback
Hope this helps
This was one of the most annoying things to debug that I have come across. I was outputting in a couple places by accident because the URL's are dynamic and they happened to not be defined in my test case (i use this to display chart data and there is not enough right now so the google chart api URL's are blank). This caused my browser to make multiple requests to my localhost when some pages were loaded. Somehow that made the oauth process crap out. Obviously there is no way for people on S.O. to know about my application specific issue so I had to answer my own question.
I had this same problem and none of the suggestions in this thread worked for me.
I found the problem for me was the TIMESTAMP on my request. The mobile device I was running my scripts on had a jacked up clock. When I updated the system time on my device to the correct time (i.e. now), all of my requests came back "200 OK" instead of "401 Unauthorized".
This problem seems to be caused by twitter not being able to handle connection keep-alive correctly. Make sure you set connection=close http header in the request to twitter. Wasted a weekend debugging this.
not enough info for me, but when was twitter gem last updated? twitter changed their oauth 'stuff' in mid may approx. perhaps you have an old one. I'd update your question to show the callback_url, and make sure you have the right token and secret, which it looks like you don't have.
also, did you put the right callback url in your twitter app page? alot of times that screws you up too.
if that fails use mbleighs twitter_auth instead. it worked for me and is pretty slick.