回答

3

Mini FB plugin用于Facebook登录。它也允许我获取用户联系人。所以我可以使用这个Facebook的。 Koala是用于读取Facebook好友

FACEBOOK UPDATE

在这里,我得到了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> 


Google Update

google developers guide,我们有一节“检索所有联系人”,但两者之间有一行写的,即: -

注:检索另一用户的接触不是由联系人API的当前版本支持。

/* 
    * Retrieve all contacts 
    */ 

    // Create the contacts service object 
    var contactsService = 
     new google.gdata.contacts.ContactsService('GoogleInc-jsguide-1.0'); 

    // The feed URI that is used for retrieving contacts 
    var feedUri = 'http://www.google.com/m8/feeds/contacts/default/full'; 
    var query = new google.gdata.contacts.ContactQuery(feedUri); 

    // Set the maximum of the result set to be 50 
    query.setMaxResults(50); 

    // callback method to be invoked when getContactFeed() returns data 
    var callback = function(result) { 

    // An array of contact entries 
    var entries = result.feed.entry; 

    // Iterate through the array of contact entries 
    for (var i = 0; i < entries.length; i++) { 
     var contactEntry = entries[i]; 

     var emailAddresses = contactEntry.getEmailAddresses(); 

     // Iterate through the array of emails belonging to a single contact entry 
     for (var j = 0; j < emailAddresses.length; j++) { 
     var emailAddress = emailAddresses[j].getAddress(); 
     PRINT('email = ' + emailAddress); 
     }  
    } 
    } 

    // Error handler 
    var handleError = function(error) { 
    PRINT(error); 
    } 

    // Submit the request using the contacts service object 
    contactsService.getContactFeed(query, callback, handleError); 

为谷歌接触的另一种服务器端解决方案: 解决方案谷歌:

获得从here您的client_id和client_secret。这是粗略的脚本,它工作得很好。根据您的需求修改它。

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 

设置的屏幕截图。

enter image description here

5

对于​​或为您的特定目的:Gmail Contacts

对于雅虎联系人,据我所知,Contacts似乎是使用的那个。如果有人有更好的选择。请提一下。

对于推特,我会强烈推荐Twitter宝石。

对于Facebook,你已经得到了你的Facebook宝石排序。不过,我个人使用FB Graph

编辑:

嗯,我想有一个看看文档。没有提到的例子。虽然它确实提到:

看样/ authsub.rb针对使用GmailContacts

这是无处可寻的例子 。也许给作者的快速电子邮件可能有帮助?

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

或者,另一种联系人检索方式,我发现this这可能是有用的。

+0

是否有任何gmail联系人的示例代码。我试过但没有得到任何东西。 – 2011-06-20 09:03:39

+0

嗨Mohit,看我的编辑 – 2011-06-20 14:20:02

1

您需要通过连接表跟踪哪个用户已经邀请了谁。这里是FB.ui JS w /回调让你开始:

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" 
     } 
    }); 
    } 
}); 
相关问题