0

我在本地机器上写了一个代码来获取链接的完整配置文件数据,代码如下。我已将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 上返回的对象可以转换为散列,而在服务器上找到的对象如果我在其上调用 'to_hash' 会给我一个错误。服务器与本地主机不同的原因可能是什么?这是身份验证问题吗?

4

1 回答 1

0

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

于 2014-04-17T06:42:24.177 回答