LinkedIn APIをテストし、LinkedInのOAuthプロバイダに対して認証するためのMeteor JSスマートパッケージを作成しようとすると、私は全面的なロードブロッキングを実行しました。LinkedIn APIにコマンドラインカールを使用して有効なoauthトークンを生成できないのはなぜですか?
はthese directionsを、以下では、私はの形で、成功した認証要求で使用するためoauth_token
を生成することができた:
https://www.linkedin.com/uas/oauth/authorize?oauth_token={oauth_token}
Rubyスクリプトによって生成されたトークンを使用してブラウザにそれを置くこと次のようになります。
require 'oauth'
api_key = '{linkedin api key}'
api_secret = '{linkedin api secret}'
configuration = { :site => 'https://api.linkedin.com',
:authorize_path => '/uas/oauth/authenticate',
:request_token_path => '/uas/oauth/requestToken',
:access_token_path => '/uas/oauth/accessToken' }
consumer = OAuth::Consumer.new(api_key, api_secret, configuration)
request_token = consumer.get_request_token
puts request_token.params[:oauth_token]
私は、簡単にURIの上に使用して、ブラウザでのクエリ文字列のparamとしてトークンをダンプし、LinkedInの許可]ダイアログボックスが表示されます。
有効なトークンに表示されますのLinkedIn認証ウィンドウ:
コマンドラインのカール要求を書き込もうとしたときに、その同じURLで使用する場合残念ながら、生成されoauth_token
が失敗しました。確かに、それはリンクインが500エラーで応答し、ブラウザが標準500エラーウィンドウを表示します。応答はなし追加の詳細が付属しています。ここでは
は、私は新しいoauth_token
のためのLinkedInに私のカールリクエストで実装していたもののようなコードです:
[email protected] accounts-linkedin (fixes_for_meteor_0_5_4)* $ cat linkedin_oauth_gen.sh
curl -X POST https://api.linkedin.com/uas/oauth/requestToken --verbose --header 'Authorization: OAuth oauth_nonce="0d9a3e40660811e2bcfd0800200c9a66",oauth_timestamp="1359019570",oauth_version="1.0",oauth_signature_method="HMAC-SHA1",oauth_consumer_key="{oauth_consumer_key}",oauth_signature="{oauth_signature}"'
それは注目に値します私はLinkedIn's OAuth test consoleを使用してAuthorizationヘッダーを生成していました。
Meteor JSスマートパッケージ内で同様の機能を実装しようとすると同じ問題が発生するため、これは重要です。
しかし、私の主な質問は、上記のルビーコードを使っても可能ですが、単純なカールシェルコマンドを使用すると、トークンが有効に生成されないようです(またはLinkedInは単純にそれを尊重するために)...
FWIW、私はこれを詳しく読んでいます:http://developer.linkedin.com/documents/common-issues-oauth-authentication – zealoushacker
このスレッドはlinkedin開発者フォーラムで見つかりました: http:///developer.linkedin.com/forum/500-internal-server-error-when-authorizing-user#comment-21135 – zealoushacker