Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在RubyonRails中获取Gmail、Yahoo、Hotmail、Twitter和Facebook联系人列表时遇到的问题_Ruby On Rails_Ruby On Rails 3_Rubygems_Contacts_Social Networking - Fatal编程技术网

Ruby on rails 在RubyonRails中获取Gmail、Yahoo、Hotmail、Twitter和Facebook联系人列表时遇到的问题

Ruby on rails 在RubyonRails中获取Gmail、Yahoo、Hotmail、Twitter和Facebook联系人列表时遇到的问题,ruby-on-rails,ruby-on-rails-3,rubygems,contacts,social-networking,Ruby On Rails,Ruby On Rails 3,Rubygems,Contacts,Social Networking,在搜索时发现插件 但根据自述文件中描述的用法。获取联系人需要用户名和密码。但这不是一个好方法。对于您的特定目的: 据我所知,雅虎的联系人似乎就是被使用的联系人。如果有人有更好的选择。请务必提及 对于Twitter,我强烈推荐gem 对于Facebook,你已经把你的Facebook gem整理好了。但是,我个人使用 编辑: 嗯,我试着看了看医生。没有提到任何例子。虽然它确实提到: 有关示例,请参见sample/authsub.rb 哪个使用Gmail联系人 这是无处可寻的。也许给作者发一封简短的

在搜索时发现插件

但根据自述文件中描述的用法。获取联系人需要用户名和密码。但这不是一个好方法。

对于您的特定目的:

据我所知,雅虎的联系人似乎就是被使用的联系人。如果有人有更好的选择。请务必提及

对于Twitter,我强烈推荐gem

对于Facebook,你已经把你的Facebook gem整理好了。但是,我个人使用

编辑:

嗯,我试着看了看医生。没有提到任何例子。虽然它确实提到:

有关示例,请参见sample/authsub.rb 哪个使用Gmail联系人

这是无处可寻的。也许给作者发一封简短的电子邮件会有所帮助

这也似乎是相当好的网上记录。如果你能找到一种方法来解决你的项目需求。然后,您可以将其用作其他电子邮件提供商的通用解决方案

另外,我还发现了另一种检索联系人的方法,这对Facebook登录非常有用。

。它还允许我获取用户联系人。所以我可以在Facebook上用这个。是获取facebook好友的另一个解决方案

FACEBOOK更新

在这里,我得到了facebook的解决方案,但我想它只是显示我邀请facebook的朋友

    <div id="facebook_invites" class="conclusion" style="width: 750px; text-align: center">
      <a id="wall_post" href="#" style="font-size: 2em;">Post on your Wall</a><br/>
      <a id="invite_friends" href="#" style="font-size: 1.5em;">Invite your Friends</a>
      </div>
        <div id="fb-root"></div>


      <script type="text/javascript" src="http://connect.facebook.net/en_US/all.js"></script>
        <script type="text/javascript">
          $('#wall_post').click(function() {
            FB.init({
              appId:'app_id', cookie:true,
              status:true, xfbml:true
            });

            FB.ui({ method: 'feed',
              link: 'http://localhost:3000/',
              picture: 'http://localhost:3000/',
              description: 'abc is cool.',
              name: 'abc.com'});
          });

          $('#invite_friends').click(function() {
            FB.init({
              appId:'app_id', cookie:true,
              status:true, xfbml:true
            });

            FB.ui({ method: 'apprequests',
              message: 'abc is cool.'});
          });
        </script>


$('wall#u post')。单击(函数(){ FB.init({ appId:'app_id',cookie:true, 状态:true,xfbml:true }); ui({method:'feed', 链接:'http://localhost:3000/', 图片:'http://localhost:3000/', 描述:“abc很酷。”, 名称:'abc.com'}); }); $(“#邀请朋友”)。单击(函数(){ FB.init({ appId:'app_id',cookie:true, 状态:true,xfbml:true }); ui({method:'apprequests', 信息:“abc很酷。”; });


谷歌更新

从中,我们有一个部分“检索所有联系人”,但在这中间有一行文字,即:-

注意:当前版本的contacts API不支持检索其他用户的联系人。

/*
*检索所有联系人
*/
//创建联系人服务对象
var接触器服务=
新的google.gdata.contacts.contacts服务('GoogleInc-jsguide-1.0');
//用于检索联系人的源URI
var feedUri=http://www.google.com/m8/feeds/contacts/default/full';
var query=new google.gdata.contacts.ContactQuery(feedUri);
//将结果集的最大值设置为50
query.setMaxResults(50);
//getContactFeed()返回数据时调用的回调方法
var callback=函数(结果){
//联系人条目的数组
var条目=result.feed.entry;
//遍历联系人条目数组
对于(变量i=0;i
谷歌联系人的另一个服务器端解决方案: 谷歌解决方案:

从中获取您的客户id和客户机密。这是一个粗略的脚本,非常好用。根据您的需要进行修改

    require 'net/http'
    require 'net/https'
    require 'uri'
    require 'rexml/document'

    class ImportController < ApplicationController

      def authenticate
        @title = "Google Authetication"

        client_id = "xxxxxxxxxxxxxx.apps.googleusercontent.com"
        google_root_url = "https://accounts.google.com/o/oauth2/auth?state=profile&redirect_uri="+googleauth_url+"&response_type=code&client_id="+client_id.to_s+"&approval_prompt=force&scope=https://www.google.com/m8/feeds/"
        redirect_to google_root_url
      end

      def authorise
        begin
          @title = "Google Authetication"
          token = params[:code]
          client_id = "xxxxxxxxxxxxxx.apps.googleusercontent.com"
          client_secret = "xxxxxxxxxxxxxx"
          uri = URI('https://accounts.google.com/o/oauth2/token')
          http = Net::HTTP.new(uri.host, uri.port)
          http.use_ssl = true
          http.verify_mode = OpenSSL::SSL::VERIFY_NONE
          request = Net::HTTP::Post.new(uri.request_uri)

          request.set_form_data('code' => token, 'client_id' => client_id, 'client_secret' => client_secret, 'redirect_uri' => googleauth_url, 'grant_type' => 'authorization_code')
          request.content_type = 'application/x-www-form-urlencoded'
          response = http.request(request)
          response.code
          access_keys = ActiveSupport::JSON.decode(response.body)

          uri = URI.parse("https://www.google.com/m8/feeds/contacts/default/full?oauth_token="+access_keys['access_token'].to_s+"&max-results=50000&alt=json")

          http = Net::HTTP.new(uri.host, uri.port)
          http.use_ssl = true
          http.verify_mode = OpenSSL::SSL::VERIFY_NONE
          request = Net::HTTP::Get.new(uri.request_uri)
          response = http.request(request)
          contacts = ActiveSupport::JSON.decode(response.body)
          contacts['feed']['entry'].each_with_index do |contact,index|

             name = contact['title']['$t']
             contact['gd$email'].to_a.each do |email|
              email_address = email['address']
              Invite.create(:full_name => name, :email => email_address, :invite_source => "Gmail", :user_id => current_user.id)  # for testing i m pushing it into database..
            end

          end  
        rescue Exception => ex
           ex.message
        end
        redirect_to root_path , :notice => "Invite or follow your Google contacts."


      end

    end
需要“net/http”
需要“net/https”
需要“uri”
需要“rexml/文档”
类ImportController令牌,'client\u id'=>client\u id,'client\u secret'=>client\u secret,'redirect\u uri'=>googleauth\u url,'grant\u type'=>授权码')
request.content_type='application/x-www-form-urlencoded'
response=http.request(请求)
响应代码
access\u keys=ActiveSupport::JSON.decode(response.body)
uri=uri.parse(“https://www.google.com/m8/feeds/contacts/default/full?oauth_token=“+access_key['access_token'].to_s+”&max results=50000&alt=json”)
http=Net::http.new(uri.host,uri.port)
http.use_ssl=true
http.verify\u mode=OpenSSL::SSL::verify\u NONE
request=Net::HTTP::Get.new(uri.request\u uri)
response=http.request(请求)
contacts=ActiveSupport::JSON.decode(response.body)
联系人['feed']['entry']。每个索引为c的联系人
    require 'net/http'
    require 'net/https'
    require 'uri'
    require 'rexml/document'

    class ImportController < ApplicationController

      def authenticate
        @title = "Google Authetication"

        client_id = "xxxxxxxxxxxxxx.apps.googleusercontent.com"
        google_root_url = "https://accounts.google.com/o/oauth2/auth?state=profile&redirect_uri="+googleauth_url+"&response_type=code&client_id="+client_id.to_s+"&approval_prompt=force&scope=https://www.google.com/m8/feeds/"
        redirect_to google_root_url
      end

      def authorise
        begin
          @title = "Google Authetication"
          token = params[:code]
          client_id = "xxxxxxxxxxxxxx.apps.googleusercontent.com"
          client_secret = "xxxxxxxxxxxxxx"
          uri = URI('https://accounts.google.com/o/oauth2/token')
          http = Net::HTTP.new(uri.host, uri.port)
          http.use_ssl = true
          http.verify_mode = OpenSSL::SSL::VERIFY_NONE
          request = Net::HTTP::Post.new(uri.request_uri)

          request.set_form_data('code' => token, 'client_id' => client_id, 'client_secret' => client_secret, 'redirect_uri' => googleauth_url, 'grant_type' => 'authorization_code')
          request.content_type = 'application/x-www-form-urlencoded'
          response = http.request(request)
          response.code
          access_keys = ActiveSupport::JSON.decode(response.body)

          uri = URI.parse("https://www.google.com/m8/feeds/contacts/default/full?oauth_token="+access_keys['access_token'].to_s+"&max-results=50000&alt=json")

          http = Net::HTTP.new(uri.host, uri.port)
          http.use_ssl = true
          http.verify_mode = OpenSSL::SSL::VERIFY_NONE
          request = Net::HTTP::Get.new(uri.request_uri)
          response = http.request(request)
          contacts = ActiveSupport::JSON.decode(response.body)
          contacts['feed']['entry'].each_with_index do |contact,index|

             name = contact['title']['$t']
             contact['gd$email'].to_a.each do |email|
              email_address = email['address']
              Invite.create(:full_name => name, :email => email_address, :invite_source => "Gmail", :user_id => current_user.id)  # for testing i m pushing it into database..
            end

          end  
        rescue Exception => ex
           ex.message
        end
        redirect_to root_path , :notice => "Invite or follow your Google contacts."


      end

    end
FB.ui({
    method: 'apprequests',
    title: t,
    message: m
},
function(response) {
  if (response) {
    $.ajax({
      type: 'POST',
      url: "/invitation_requests/create",
      data: { "requests[]" : response.request_ids },
      timeout: 12500,
      async : false, // This fixes an issue w/ IE
      complete: function() {
        $.cookie( "latest_request_ids", response.request_ids.length );
        window.location = "/users"
      }
    });
  }
});