Linkedin gem - 为什么API在localhost和myDomain上获取不同的数据集?

时间:2014-04-16 03:49:53

标签: ruby-on-rails oauth linkedin linkedin-gem

我在本地计算机上编写了一个代码来获取linkedin完整个人资料,代码如下。我已经将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作为要授权的网站。 尽管在两种情况下似乎都提取了linkedin信息,但是在我的本地主机上取出的对象与我在服务器会话中取出的内容不同。例如,上面的对象“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上返回的对象可以转换为hash,而如果我在其上调用'to_hash',服务器上找到的对象会给我一个错误。 这可能是服务器与localhost不同的原因?这是身份验证问题吗?

1 个答案:

答案 0 :(得分:0)

原来是一个API授权问题 - 即localhost已获得授权,但myDomain却未获得授权。我在LinkedIn ... kaboom的新应用程序名称下重新生成了一个新的api密钥。现在世界变得更有意义了。