J'ai besoin d'aide pour l'intégration de Google.Créer un contact Google via l'API dans Ruby On Rails
J'ai besoin de créer des contacts google via l'API Google Contacts, mais toutes les gemmes que je trouve ne reçoivent que le contenu et il semble également que l'API Google Contacts ne prend pas en charge les messages JSON, uniquement xml/atom.
C'est ce que je
Gemfile
gem 'google-api-client'
google_contacts_controller.rb
require 'google/apis/people_v1'
require 'google/api_client/client_secrets'
class GoogleContactsController < ApplicationController
def auth
client_secrets = Google::APIClient::ClientSecrets.load('app/controllers/google_contacts/client_secret.json')
auth_client = client_secrets.to_authorization
auth_client.update!(
:scope => 'https://www.google.com/m8/feeds/',
:redirect_uri => 'http://localhost:3000/google_contacts/auth')[]
if request['code'] == nil
auth_uri = auth_client.authorization_uri.to_s
redirect_to auth_uri
else
auth_client.code = request['code']
auth_client.fetch_access_token!
auth_client.client_secret = nil
_auth_client(auth_client)
redirect_to action: 'sync_contacts'
end
end
def sync_contacts
unless session.has_key?(:credentials)
_auth_client
unless session.has_key?(:credentials)
redirect action: 'auth'
end
end
client_opts = JSON.parse(session[:credentials])
auth_client = Signet::OAuth2::Client.new(client_opts)
people_service = Google::Apis::PeopleV1::PeopleServiceService.new
people_service.authorization = auth_client
response = people_service.list_person_connections('people/me', request_mask_include_field: %w'person.names', page_size: 10,)
remote_name_arry = response.connections.map{|person| person.names[0].display_name}
redirect_to action: 'done', message: 'Synced Contacts'
end
def done
@message = params[:message]
end
private
def _auth_client(auth_client=nil)
if auth_client
credentials = GoogleContactCredential.new
credentials.authorization_uri = auth_client.authorization_uri
credentials.token_credential_uri = auth_client.token_credential_uri
credentials.client_id = auth_client.client_id
credentials.scope = "[#{auth_client.scope.join(', ')}]"
credentials.redirect_uri = auth_client.redirect_uri
credentials.expiry = auth_client.expiry
credentials.expires_at = auth_client.expires_at
credentials.access_token = auth_client.access_token
if credentials.save
session[:credentials] = credentials.to_json
end
else
credentials = GoogleContactCredential.first
if credentials.present?
session[:credentials] = credentials.to_json
end
end
credentials
end
end
Tout cela fonctionne très bien et je suis en mesure d'obtenir tous mes contacts, mais Je ne peux pas trouver un moyen avec cette gemme ou une autre gemme ou JSON pour créer des contacts.
Y a-t-il quelqu'un qui a eu ce problème et qui peut me diriger dans la bonne direction?
MISE À JOUR
J'ai également essayé d'utiliser la gemme google_contacts_api pas de succès.
Voici ce que j'ai
Gemfile
gem 'google_contacts_api'
google_contacts_controller.rb
def sync_contacts
unless session.has_key?(:credentials)
_auth_client
unless session.has_key?(:credentials)
redirect action: 'auth'
end
end
client_opts = JSON.parse(session[:credentials])
auth = OAuth2::Client.new(client_opts['client_id'], client_opts['client_secret'], client_opts)
token = OAuth2::AccessToken.new(auth, client_opts['access_token'])
google_contacts_user = GoogleContactsApi::User.new(token)
contacts = google_contacts_user.contacts
contact = contacts.first
logger.info contact.title
new_group = google_contacts_user.create_group('New group')
redirect_to action: 'done', message: 'Synced Contacts'
end
Tout fonctionne bien jusqu'à ce que cette ligne (que je suis sorti de l'exemple fourni pour la gemme):
new_group = google_contacts_user.create_group('New group')
Puis-je obtenir cette exception ligne:
undefined method `create_group' for #<GoogleContactsApi::User:0x007ff2da2291b8>
Quelqu'un peut-il repérer mon erreur je fait? En outre, comment pourrais-je procéder pour créer des contacts car je n'arrive pas à trouver de documentation ou de messages sur la création et la mise à jour des contacts, je pensais que je devrais créer un groupe et ajouter des contacts au groupe comme je n'arrive pas à créer un groupe, je ne peux pas tester cette théorie.
S'il vous plaît me diriger dans la bonne direction
Merci pour la réponse, mais j'ai déjà trouvé ce post et essayé d'utiliser la gemme, j'ai également réussi à le configurer et l'autoriser et obtenir une liste de contacts, mais n'a pas été en mesure de créer des contacts – IDP
Dans ce cas, il Il vous appartient de mettre à jour votre question. Postez votre nouveau code et je vais travailler sur la mise à jour de ma réponse. – eiko
Je ferai bientôt merci – IDP