【问题标题】:How do I used the linkedin gem to parse a profile in rails?如何使用linkedin gem 解析rails 中的配置文件?
【发布时间】:2011-04-23 20:54:04
【问题描述】:

我正在使用linkedin gem https://github.com/pengwynn/linkedin

我授权使用 Omniauth 并存储访问令牌和机密。

然后我通过客户端访问进行授权。

当我输入 client.profile 时,我似乎得到了一些有用的东西——但它看起来主要是 Nokogiri,但在 LinkedIn::Profile 类中。

我如何专门访问字段,我是否能够在 rails 中使用视图中的方法调用,或者我是否需要在控制器中进行所有解析并将这些值从那里传递给视图。

一旦我建立了client.profile,如何访问个人资料图片网址、标题、姓名、公司之类的东西会很棒。

当我使用 (:fields =>) 时,我会得到这样的结果:

#<LinkedIn::Profile:0xb682c72c @doc=#<Nokogiri::XML::Document:0x..fdb41630a name="document" children=[#<Nokogiri::XML::Element:0x..fdb415fae name="person" children=[#<Nokogiri::XML::Text:0x..fdb415d88 "\n  ">, #<Nokogiri::XML::Element:0x..fdb415d24 name="picture-url" children=[#<Nokogiri::XML::Text:0x..fdb415aae "http://media.linkedis:

我只想要与节点“picture-url”关联的字符串...我该怎么做?

来自控制器:

7   `def show`
  8     @user = User.find(params[:id]) 
  9     @client = LinkedIn::Client.new(ENV["LINKEDIN_KEY"], ENV["LINKEDIN_SECRET"]) 
 10     @client.authorize_from_access(@user.atoken, @user.asecret) 
 11     @client.profile(:id => @user.uid, :fields => ["picture-url", "headline"]) 
 12     
 13   end 

新错误:

undefined method `downcase' for nil:NilClass

这是一个相关的问题:“https://stackoverflow.com/questions/5821549/how-do-i-pass-a-a-tag-through-ruby-to-linkedin-using-the-gem

【问题讨论】:

  • 您可以为您的小写错误发布完整的回溯吗?您确定上面示例中的所有令牌实际上都不是 NIL 吗?尝试在 IRB 控制台中运行 show 方法中的所有命令,看看其中哪一个导致回溯,然后关注该命令及其参数

标签: ruby-on-rails ruby nokogiri linkedin


【解决方案1】:

我通过添加:

client.profile(:fields => [:positions]).positions

这将允许我访问特定的位置或字段,而无需进入原始 xml,只需使用 gem 中的方法。一旦我得到格式,gem 就会很好地工作......

【讨论】:

    【解决方案2】:

    我建议你从 github 获取最新版本的linked_in gem。它使用 Hashie/Mashie 语法,这比处理 Nokogiri 输出和 XPath 简单得多。 如果您使用捆绑器,请将其添加到您的 Gemfile(删除任何其他 linked_in gem 参考)

    gem 'linkedin', :git => "git://github.com/pengwynn/linkedin.git"
    

    此版本的 gem 基本上将您的 Linked In 搜索的输出粘贴到哈希中,因此您可以按如下方式访问您的图片 URL 字符串:profileHash["picture-url"]

    附:如果您决定坚持使用您的linked_in gem 版本,熟悉XPath 语法,您将需要它。根据您提供的信息,图片 url 字符串将通过 profileXML.xpath("//person/picture-url").first.text

    获得

    【讨论】:

    • 你好!是的,我尝试使用 git 版本....也许我需要先卸载并试一试...谢谢,会及时通知您。
    • 嗨,我做了更改,看起来它仍然返回一个 Linkedin::Profile 类,其 @doc 是 Nokogiri...将更新我在控制器中的内容
    • 那你没有得到正确的版本。看github.com/pengwynn/linkedin/tree/master/lib/linked_in的master分支源码——没有Profile类(老版本确实存在)
    • 我明白了……我想我还是不清楚该怎么做,然后……我声明客户端,然后我应用什么方法?
    • @Vladimir,这就是我在捆绑器中显示的内容——看起来像是最新的.... .bundler/ruby/1.8/linkedin-3b660ce1465c
    猜你喜欢
    • 2012-12-07
    • 2011-02-01
    • 2014-12-22
    • 2012-06-16
    • 1970-01-01
    • 2013-06-07
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多