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:
- Estás usando un dominio de Google Apps. Esta API no funciona para usuarios regulares de Google+.
- 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+ .
- Su dominio de Google App debe tener Google+ habilitado por el Administrador.
- 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"