我正在使用linkedin gem https://github.com/pengwynn/linkedin
我授权使用Omniauth并存储访问令牌和秘密。
然后通过访问与客户端进行授权。
当我键入client时,我似乎得到了一些有用的东西。profile——但它看起来更像Nokogiri,但在LinkedIn:: profile类中。
我如何具体访问字段,我是否能够在rails中使用来自视图的方法调用,或者我是否需要在控制器中执行所有解析并从那里将这些值传递给视图。
如何访问配置文件图像url,标题,名称,公司的那种东西的例子,一旦我建立了客户端。个人资料会很好。
当我使用(: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"
我添加了:
client.profile(:fields => [:positions]).positions
这将允许我访问特定的位置或字段,而无需进入原始xml,只需使用gem中的方法。一旦我得到格式,gem就会很好地工作…
我建议你从github获得最新版本的linked_in gem。它使用Hashie/Mashie语法,这比处理Nokogiri输出和XPath要简单得多。如果你在使用绑定器,把这个添加到你的Gemfile中(删除任何其他的linked_in gem引用)
gem 'linkedin', :git => "git://github.com/pengwynn/linkedin.git"
这个版本的gem基本上把你的Linked In搜索的输出粘贴到一个散列中,所以你可以这样访问你的picture-url字符串:profileHash["picture-url"]
注:如果您决定坚持使用您的linked_in gem版本,那么您需要熟悉XPath语法。根据您提供的信息,图片url字符串将通过profileXML.xpath("//person/picture-url").first.text