搜索时跨过Contacts插件。提取地址簿以获取Ruby on Rails中的Gmail,Yahoo,Hotmail,Twitter和Facebook联系人列表中的问题
但按照自述文件中描述的用法。它需要用户名和密码来获取联系人。但这不是一个好方法。
搜索时跨过Contacts插件。提取地址簿以获取Ruby on Rails中的Gmail,Yahoo,Hotmail,Twitter和Facebook联系人列表中的问题
但按照自述文件中描述的用法。它需要用户名和密码来获取联系人。但这不是一个好方法。
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
设置的屏幕截图。
对于或为您的特定目的:Gmail Contacts。
对于雅虎联系人,据我所知,Contacts似乎是使用的那个。如果有人有更好的选择。请提一下。
对于推特,我会强烈推荐Twitter宝石。
对于Facebook,你已经得到了你的Facebook宝石排序。不过,我个人使用FB Graph。
编辑:
嗯,我想有一个看看文档。没有提到的例子。虽然它确实提到:
看样/ authsub.rb针对使用GmailContacts
这是无处可寻的例子 。也许给作者的快速电子邮件可能有帮助?
它似乎也是Contacts gem网上很好的文件。如果你能找到一种方法来解决你的项目需求。然后,您可以将其用作其他电子邮件提供商的通用解决方案。
或者,另一种联系人检索方式,我发现this这可能是有用的。
对于Gmail,而不是使用任何宝石,你应该使用示例代码,这不是一个值得宝石。
看到这里我的示例代码 - https://gist.github.com/742461
竟然出现了此处的博客文章 - http://rtdptech.com/2010/12/importing-gmail-contacts-list-to-rails-application/,但似乎目前它正面临重定向问题。
您需要通过连接表跟踪哪个用户已经邀请了谁。这里是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"
}
});
}
});
是否有任何gmail联系人的示例代码。我试过但没有得到任何东西。 – 2011-06-20 09:03:39
嗨Mohit,看我的编辑 – 2011-06-20 14:20:02