ruby-on-rails-3.2 google-api google-plus ruby-2.0 google-api-ruby-client

ruby on rails 3.2 - Google plus inserta actividad en la transmisión



ruby-on-rails-3.2 google-api (1)

Duro tiempo insertando una actividad en google plus stream. Después de referirse a la guía de desarrolladores de google . Encontré un ejemplo para Java - https://developers.google.com/+/domains/posts/creating

¿Hay algún ejemplo similar para ejecutar la consulta activites.insert usando google-api-ruby-client ?

Seguí los siguientes pasos:

Definir el acceso a la aplicación a través de omniauth-google-oauth2

GOOGLE_CONSUMER_KEY = google_config[''KEY''] GOOGLE_CONSUMER_SECRET = google_config[''SECRET''] google_scope = "userinfo.email, userinfo.profile, plus.login, plus.me, plus.media.upload, plus.profiles.read, plus.stream.read, plus.stream.write, plus.circles.read, plus.circles.write" Rails.application.config.middleware.use OmniAuth::Builder do provider :google_oauth2, GOOGLE_CONSUMER_KEY, GOOGLE_CONSUMER_SECRET, { name: ''google'', scope: google_scope, prompt: ''consent'' } end

Utilice el token y el token de actualización para ejecutar las llamadas de API google-api-ruby-client . Puedo enumerar las actividades usando "más", pero para insertar una actividad debo usar plusDomains.

client = Google::APIClient.new(:application_name =>''Demo GooglePlus'',:application_version => ''1.0.0'') plus = client.discovered_api(''plus'') plusd = client.discovered_api(''plusDomain'') client_secrets = Google::APIClient::ClientSecrets.load auth=client_secrets.to_authorization auth.update_token!(access_token: ''aRandomToken'', refresh_token: ''aRandomRefreshToken'') result = client.execute(:api_method => plus.activities.list,:parameters => {''collection'' => ''public'', ''userId'' => ''me''}, :authorization => auth) >> This works, returns the list of activities

Usando más dominio

result = client.execute(:api_method => plusd.activities.insert,:parameters => {''collection'' => ''public'', ''userId'' => ''me''}, :authorization => auth) >> Returns 403 Forbidden

Más tarde me di cuenta de que la API de Google requiere delegaton de dominio para usar la API de dominios (creo que eso es correcto) https://developers.google.com/+/domains

https://developers.google.com/+/domains/getting-started#accessing_the_apis - ¿Será suficiente la oauth utilizada en el Paso 1 anterior?

https://developers.google.com/+/domains/quickstart/python - ¿Hay algo disponible en RUBY?

Probé la configuración de la cuenta de servicio también, creé una aplicación comercial y seguí un ejemplo de service_account

Pero aún no es suerte.

Probando terminal

curl -v -H "Content-Type: application/json" -H "Authorization: OAuth ya12.AqwqwwAS1212grcECQ3iVAlg" -d "{''object'':{''content'':''Test message''},''access'':{''items'':[{''type'' : ''domain''}],''domainRestricted'':true}}" -X POST https://www.googleapis.com/plus/v1domains/people/me/activities Results in -> { "error": { "errors": [ { "domain": "global", "reason": "forbidden", "message": "Forbidden" } ], "code": 403, "message": "Forbidden" } }

¿Puedo obtener ayuda para insertar una actividad en google plus user steam?

¡Gracias!


Un par de cosas para verificar primero:

  1. Estás usando un dominio de Google Apps. Esta API no funciona para usuarios regulares de Google+.
  2. Ha habilitado la API de dominios de Google+ en la consola de API de Google donde creó su ID de cliente. Es fácil pasar por alto la API de Dominios de Google+ y, en su lugar, habilitar accidentalmente la API de Google+ .
  3. Su dominio de Google App debe tener Google+ habilitado por el Administrador.
  4. El usuario que está actuando en nombre de, ya sea a través del flujo estándar de OAuth o a través de una delegación de todo el dominio, ha creado un perfil de Google+.

Siguiente: No puede usar el alcance plus.login con la API de dominios. Creo que también debe soltar los ámbitos de información de usuario. *. Consulte la lista completa de ámbitos de la API de dominios de Google+ .

Además, creo que sus ámbitos se están definiendo incorrectamente, creo que necesitan usar sus URI completos:

google_scope = "https://www.googleapis.com/auth/plus.me, https://www.googleapis.com/auth/plus.media.upload, https://www.googleapis.com/auth/plus.profiles.read, https://www.googleapis.com/auth/plus.stream.read, https://www.googleapis.com/auth/plus.stream.write, https://www.googleapis.com/auth/plus.circles.read, https://www.googleapis.com/auth/plus.circles.write"