1

我可以使用 Rails 中的 OAuth gem 成功地从谷歌获取联系人。我的gmail配置是:

:google=>{
    :key=>"***",
    :secret=>"***",
    :expose => true, 
    :scope=>"https://www.google.com/m8/feeds/" 
  }

现在我想从雅虎和热邮件获得联系。如何获得该联系人我在我的 oauth_consumer.rb 文件中给出了以下配置

:yahoo=>{
   :client=>:oauth_gem, 
   :expose => true, 
   :allow_login => true, 
   :key=>"**",
   :secret=>"**",
   :scope=>"https://me.yahoo.com"
 }

:hotmail=>{
   :client=>:oauth_gem, 
   :expose => true, 
   :allow_login => true, 
   :key=>"**",
   :secret=>"**"  
 }

当我尝试像在谷歌中所做的那样做同样的事情时,它会like undefined method为 nil:NilClass 提供错误小写'

我也尝试过联系人gem,但无法加载联系人。

4

1 回答 1

2

请尝试使用 OmniContacts https://github.com/Diego81/omnicontacts这将对您有很大帮助。

  1. 在你的 gemfile

    gem "omnicontacts"
    
  2. 创建 config/initializers/omnicontacts.rb

    require "omnicontacts"
    
    Rails.application.middleware.use OmniContacts::Builder do
      importer :gmail, "client_id", "client_secret", {:redirect_path => "/oauth2callback", :ssl_ca_file => "/etc/ssl/certs/curl-ca-bundle.crt"}
      importer :yahoo, "consumer_id", "consumer_secret", {:callback_path => '/callback'}
      importer :hotmail, "client_id", "client_secret"
      importer :facebook, "client_id", "client_secret"
    end
    
  3. 创建一个应用到雅虎https://developer.apps.yahoo.com/projects

    这将要求验证您的域。因此,只需将您的域更改localhost:3000local.appname.com:3000或更喜欢您的实时服务器...(在本地更改主机 --- sudo gedit /etc/hosts)

  4. 在你的控制器中

      @contacts = request.env['omnicontacts.contacts']
      @user = request.env['omnicontacts.user']
      puts "List of contacts of #{user[:name]} obtained from #{params[:importer]}:"
      @contacts.each do |contact|
        puts "Contact found: name => #{contact[:name]}, email => #{contact[:email]}"
      end
    
于 2013-06-18T07:26:31.320 回答