これは初めてのTwitter APIの作業です。 私は、次のツールを使用しています:Rubyでoauth gemを使用したTwitter APIから401の権限がありません
- ルビー2.2.0p0(2014年12月25日リビジョン49005)[x86_64の-linuxの]
宝石 'のOAuth'
- のOAuth(0.5。 1)
- のOAuth2(1.1.0)
- omniauth-のOAuth2(1.4.0)
私はTwitterから鍵と秘密を取得しました。
Rubyのexample on Twitterからコピーして貼り付けました。新しい鍵と秘密の取得
:私が試した何
=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
。
結果:
ネット:: HTTPUnauthorized 401認可の必要なreadbody =真
多くのスタックオーバーフローのポストは401が返されることを述べたため、サーバーの時間が超えて変動した場合は私のサーバの時刻を同期ある点。私はntpをインストールしました。 this list
- から
提案は、Twitterの設定でコールバックURLを設定します。http://127.0.0.1:3000/auth/twitter/callback
API Console ToolをTwitterで。私のTwitterアカウントでhttps://api.twitter.com/1.1/statuses/home_timeline.json戻り予想データと一緒に
HTTP/1.1 200 OK
を認証した後。
- からどこへ行くのTwitter API operating normally
提案がここに感謝かどうかチェック。
UPDATEOAuth Tool on Twitter Developer戻りカール実行と期待される結果:
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
予想されるデータが返されます。
[{ "のcreated_at": "金5月20日11時05分21秒0000 2016"、 "ID":733614584754515968、 "id_str":
"733614584754515968"、 "テキスト": "スリー。//トンのCO/1p9AxO5JPg @sitepointdotcom経由」、 "切り捨て:すべての新しいプログラマーが HTTPSを学ぶべきスキル":偽、 "実体":{ "ハッシュタグ":[]、 " (切り捨て)シンボル" ...
ありがとうございました!これの多くは、何が起こっているかを理解するのに私には馴染みがなかった。私は助けに感謝します! – DMfll