Vraag Blijf OAuth krijgen: ongeautoriseerde fout bij het gebruik van ovale en twitter robijn edelstenen


Ik gebruik de ruby ​​twitter-edelsteen en oauth om toegang te krijgen tot Twitter-accounts van gebruikers. In mijn code, heb ik:

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

waar token en geheim mijn echte token en geheim zijn ingevoegd. Wanneer ik op de link naar @twitter_auth_url klik, word ik meegenomen om te twitteren en wordt gevraagd om toegang te verlenen. Ik klik op toestaan ​​en vervolgens wordt ik doorgestuurd naar mijn callback-URL http://www.mydomain.com/twitter_callback/?oauth_token=fmy2aMvnjVgaFrz37bJ4JuB8r5xN79gsgDQRG4BNY die vervolgens deze code raakt:

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

Het token en het geheim van het twitterverzoek worden prima geplaatst. Ik krijg echter een autorisatiefout:

 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'

De code faalt op deze regel:

oauth.authorize_from_request(session[:twitter_request_token], session[:twitter_request_secret])

wanneer het probeert een toegangstoken te krijgen. U kunt de broncode van authorize_from_request zien hier. Ik weet niet zeker waarom dit gebeurt. Heeft iemand ideeën?


40
2017-08-14 21:23


oorsprong


antwoorden:


Een beetje laat op het feest, maar ik kwam zelf hetzelfde probleem tegen. Ik heb het probleem gevolgd tot het instellen van mijn OAuth-app op Twitter. Ik had aanvankelijk geen callback-URL opgegeven omdat ik er niet zeker van was.

Nadat ik mijn rails-app had ingesteld, ging ik terug om te ontdekken dat Twitter had aangenomen dat ik een desktoptoepassing was, omdat ik geen callback-URL had opgegeven. Nadat ik dit had gewijzigd naar website en een callback-URL had ingevoerd, stopte ik met het ophalen van 400s.


78
2018-01-03 10:37



Als er een foutmelding 401 - OAuth :: Ongeautoriseerd wordt weergegeven, zorg dan dat u de instellingen van uw Twitter-applicatie als volgt bewerkt:


28
2018-03-10 15:21



dit is een probleem met de tijdsynchronisatie van uw systeem met de twitter-server.


8
2017-10-05 10:54



Twitter staat het niet toe localhost als onderdeel van een geldige callback-URL.

Gebruik in plaats daarvan http://127.0.0.1:3000/auth/twitter/callback

Ik hoop dat dit helpt


7
2018-03-08 21:47



Dit was een van de meest vervelende dingen om te debuggen die ik ben tegengekomen. Ik kwam per ongeluk op een paar plaatsen omdat de URL's dynamisch waren en ze toevallig niet in mijn testcase werden gedefinieerd (ik gebruik dit om diagramgegevens weer te geven en er is niet genoeg nu, dus de api-URL's van het Google-diagram zijn leeg). Dit zorgde ervoor dat mijn browser meerdere verzoeken aan mijn localhost deed wanneer sommige pagina's werden geladen. Op de een of andere manier maakte dat het oauth-proces waardeloos. Uiteraard is er geen manier voor mensen op S.O. om te weten over mijn toepassingsspecifieke probleem, dus moest ik mijn eigen vraag beantwoorden.


4
2017-08-18 00:35



Ik had hetzelfde probleem en geen van de suggesties in deze thread werkte voor mij.

Ik vond het probleem voor mij de TIMESTAMP op mijn verzoek. Het mobiele apparaat waarop ik mijn scripts draaide had een opgehaalde klok. Toen ik de systeemtijd op mijn apparaat naar de juiste tijd (dus nu) updatete, kwamen al mijn verzoeken terug "200 OK" in plaats van "401 Niet geautoriseerd".


2
2018-01-16 23:53



Dit probleem lijkt te worden veroorzaakt door het feit dat twitter het niet aankan connection keep-alive correct. Zorg ervoor dat je instelt connection=close http header in het verzoek om te twitteren. Verspilde een weekend debuggen dit.


1
2018-03-21 19:26



niet genoeg info voor mij, maar wanneer is twitter gem voor het laatst bijgewerkt? twitter veranderde hun oauth 'dingen' in medio mei ongeveer. misschien heb je een oude. Ik zou je vraag updaten om de callback_url te laten zien, en zorg ervoor dat je de juiste token en geheim hebt, wat lijkt op wat je niet hebt.

heb je ook de juiste callback-url op je twitter-app-pagina geplaatst? vaak dat je ook verknalt.

als dat niet lukt, gebruik dan mbleighs twitter_auth in plaats daarvan. het werkte voor mij en is behoorlijk glad.


0
2017-08-15 01:32