Dies ist meine erste Erfahrung mit Twitter APIs arbeiten. ich die folgenden Tools verwenden:401 nicht autorisiert von Twitter API mit oauth Juwel in Ruby
- Rubin 2.2.0p0 (2014.12.25 Revision 49005) [x86_64-Linux]
gem 'oauth'
- oauth (0,5. 1)
- oauth2 (1.1.0)
- omniauth-oauth2 (1.4.0)
Ich erhielt einen Schlüssel und ein Geheimnis von Twitter.
Ich kopiert und eingefügt von der example on Twitter für Ruby.
=begin
code taken directly from the example at
https://dev.twitter.com/oauth/overview/single-user
=end
require 'oauth'
consumer_key, \
consumer_secret = [
'CONSUMER_KEY',
'CONSUMER_SECRET'
].map { |key| ENV[key] }
raise "Some key undefined." unless [consumer_key, consumer_secret].all?
# Exchange your oauth_token and oauth_token_secret for an AccessToken instance.
def prepare_access_token(oauth_token, oauth_token_secret)
consumer = OAuth::Consumer.new("APIKey", "APISecret", { :site => "https://api.twitter.com", :scheme => :header })
# now create the access token object from passed values
token_hash = { :oauth_token => oauth_token, :oauth_token_secret => oauth_token_secret }
access_token = OAuth::AccessToken.from_hash(consumer, token_hash)
return access_token
end
# Exchange our oauth_token and oauth_token secret for the AccessToken instance.
access_token = prepare_access_token(consumer_key, consumer_secret)
p access_token
# use the access token as an agent to get the home timeline
response = access_token.request(:get, "https://api.twitter.com/1.1/statuses/home_timeline.json")
p response
=begin
|| #<OAuth::AccessToken:0x000000021ed938
@token="redacted", @secret="redacted",
@consumer=#<OAuth::Consumer:0x000000021edb68
@key="APIKey",
@secret="APISecret", @options={:signature_method=>"HMAC-SHA1",
:request_token_path=>"/oauth/request_token",
:authorize_path=>"/oauth/authorize",
:access_token_path=>"/oauth/access_token",
:proxy=>nil, :scheme=>:header,
:http_method=>:post, :oauth_version=>"1.0",
:site=>"https://api.twitter.com"}>,
@params={:oauth_token=>"redacted", :oauth_token_secret=>"redacted"}>
|| #<Net::HTTPUnauthorized 401 Authorization Required readbody=true>
=end
Was ich versucht:
einen neuen Schlüssel und geheimen bekommen.
Ergebnis:
Net :: HTTPUnauthorized 401 Authorization Required readbody = true
meine Serverzeit synchronisiert, weil viele Stack-Überlauf-Beiträge erwähnt, dass ein 401, wenn der Server Zeit über zurückgegeben wird, variiert ein bestimmter Punkt. Ich habe ntp installiert.
Vorschläge von this list
- stellen Sie den Callback URL in Twitter Einstellungen: http://127.0.0.1:3000/auth/twitter/callback
API Console Tool auf Twitter. Nach der Authentifizierung mit meinem Twitter-Account https://api.twitter.com/1.1/statuses/home_timeline.json kehren
HTTP/1.1 200 OK
zusammen mit erwarteten Daten.
geprüft, um zu sehen, ob Twitter API operating normally
Vorschläge von wo aus hier geschätzt gehen.
UPDATEOAuth Tool on Twitter Developer kehrt das erwartete Ergebnis mit einer Locke Ausführung:
curl --get 'https://api.twitter.com/1.1/statuses/home_timeline.json' --header 'Authorization: OAuth oauth_consumer_key="redacted", oauth_nonce="redacted", oauth_signature="redacted", oauth_signature_method="HMAC-SHA1", oauth_timestamp="1463742270", oauth_token="redacted", oauth_version="1.0"' --verbose
Erwartete Daten zurückgegeben werden.
[{ "created_at": "Fr 20. Mai 11.05.21 0.000 2016", "id": 733614584754515968 "id_str":
"733614584754515968", "text": "Three Fähigkeiten Jedes neue Programmierer sollte Lernen Sie https: // t co/1p9AxO5JPg über @sitepointdotcom“, "abgeschnitten.": false, "Entitäten": { "Hashtags"[] "Symbole" (abgeschnitten) ...
Vielen Dank! Zu viel davon war mir unbekannt, um zu erkennen, was vor sich ging. Ich schätze die Hilfe! – DMfll