リンクされた完全なプロファイル データを取得するコードをローカル マシンに書きました。コードは以下のとおりです。次のコードには、linkedin gem を使用しました。
@@config = {
:site => 'https://api.linkedin.com',
:authorize_path => '/uas/oauth/authenticate',
:request_token_path => '/uas/oauth/requestToken?scope=r_basicprofile+r_fullprofile+r_emailaddress+r_network',
:access_token_path => '/uas/oauth/accessToken'
}
client = LinkedIn::Client.new("myTokenxxxxxxxx", "mySecretxxxxxxx", @@config)
user_work_exs_linked_in = client.profile(:fields => [:positions]).positions
LinkedIn で API を使用するためにサイトを登録したとき、認証するサイトとして localhost と myDomain.com の両方を入力しました。リンクイン情報はどちらの場合も取得されているように見えますが、サーバー セッションで取得されるオブジェクトとは対照的に、ローカルホストで取得されるオブジェクトには違いがあります。たとえば、上記のオブジェクト「user_work_exs_linked_in」は、localhost で次の構造を持ちます。
=> #<LinkedIn::Mash all=[#<LinkedIn::Mash company=#<LinkedIn::Mash id=xxx industry="Internet" name="xxx" size="xxx" type="xxx"> id=xxx is_current=xxx start_date=#<LinkedIn::Mash month=x year=xxxx> summary="xxx" title="xxx">
一方、サーバー上では次のようにはるかに複雑な構造になっています (完全な構造は含まれていませんが、長すぎます)。
=> #<LinkedIn::Profile:0x007f0b8f5xxxxx @roxml_references=[#<ROXML::XMLTextRef:0x007f0b8f507340 @opts=#<ROXML::Definition:0x007f0b8ea6dc18 @default=nil, @to_xml=nil, @name_explicit=false, @cdata=nil, @required=nil, @frozen=nil, @wrapper=nil, @namespace=nil, @accessor="id", @array=false, @blocks=[], @sought_type=:text, @attr_name="id", @name="id">, @instance=#<LinkedIn::Profile:0x007f0b8fxxxxx ...>,..........
localhost で返されたオブジェクトはハッシュに変換できますが、サーバーで見つかったオブジェクトで「to_hash」を呼び出すとエラーが発生します。サーバーがローカルホストと異なる理由は何ですか? これは認証の問題ですか?