我使用omniauth成功登錄谷歌憑據? omniauth通過使用上面的鏈接提供uid作爲下面的鏈接Rails 3使用omniauth獲取gmail聯繫人?
https://www.google.com/accounts/o8/id?id=xxxxxxxxxx
可以得到Gmail聯絡人或他們的任何其他方式獲得Gmail聯繫人
我使用omniauth成功登錄谷歌憑據? omniauth通過使用上面的鏈接提供uid作爲下面的鏈接Rails 3使用omniauth獲取gmail聯繫人?
https://www.google.com/accounts/o8/id?id=xxxxxxxxxx
可以得到Gmail聯絡人或他們的任何其他方式獲得Gmail聯繫人
沒有,只是Omniauth提供身份驗證。
有可能對您感興趣的寶石:https://github.com/cardmagic/contacts
引用:「聯繫人是一個通用接口抓住從各個供應商包括的Hotmail,AOL,Gmail時,Plaxo的和雅虎聯繫人列表信息。」
編輯:看看這個博客帖子太:http://rtdptech.com/2010/12/importing-gmail-contacts-list-to-rails-application/
獲得從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
設置的屏幕截圖。
MultiJson :: LoadError(795:在'
意外的標記