Obteniendo el access token
Sigo en mi cruzada para hacer cosas automáticamente en blogger usando sandro. En este caso, hice el código para obtener un access token a partir de un authorization code. Para eso, primero necesitás registrar una aplicación de línea de comando. Una vez que lo hayas hecho, vas a tener el client id y el client secret. Pero eso no alcanza, para obtener el access token, como el que usamos en el post anterior, hace falta un authorization code. Para obtenerlo, conectate a este URL:
https://accounts.google.com/o/oauth2/auth?scope=https://www.googleapis.com/auth/blogger&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=ACA_VA_TU_CLIENT_ID
Y te va a mostrar el authorization code después de loguearte a google y autorizar a tu aplicación a hacer cosas de blogger en tu nombre.
Una vez que obtuviste tu authorization code, hay que obtener un access token. El access token te sirve para manipular blogger con tu usuario por la próxima hora. Para renovarlo, hay que usar un refresh token, que también obtendremos, pero voy a mostrar cómo usarlo en otro post.
Acá abajo dejo el código de ejemplo para obtener estos tokens.
define({
javaPackages: "javaPackages",
ary: "sandro/nadaMas/array",
json: "sandro/nadaMas/json",
object: "sandro/nadaMas/object"
}, function(m) {
var URL = m.javaPackages.java.net.URL
var out = m.javaPackages.java.lang.System.out
var String = m.javaPackages.java.lang.String
var URLEncoder = m.javaPackages.java.net.URLEncoder
var StandardCharsets = m.javaPackages.java.nio.charset.StandardCharsets
var InputStreamReader = m.javaPackages.java.io.InputStreamReader
var BufferedReader = m.javaPackages.java.io.BufferedReader
var tokenUrl = new URL("https://www.googleapis.com/oauth2/v3/token")
var paramBytes = function(p) {
var s = Object.keys(p).map(function(k) {
return "" + URLEncoder.encode(k, "UTF-8") + "=" + URLEncoder.encode(p[k])
}).join("&")
out.println(s)
s = new String(s)
return s.getBytes(StandardCharsets.UTF_8)
}
return function(code, client_id, client_secret) {
var parameters = paramBytes({
code: code,
redirect_uri: "urn:ietf:wg:oauth:2.0:oob",
client_id: client_id,
client_secret: client_secret,
grant_type: "authorization_code"
})
var c = tokenUrl.openConnection()
c.requestMethod = "POST"
c.doOutput = true
c.fixedLengthStreamingMode = parameters.length
c.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
c.connect()
c.outputStream.write(parameters)
var response = ""
var reader = new BufferedReader( new InputStreamReader( c.inputStream ) )
while( true ) {
var buff = reader.readLine()
if (buff == null) {
break
}
response += buff
}
var jsonResponse = m.json.parse( "" + response )
out.println("Tokens: " + m.json.stringify(jsonResponse))
}
})
No uso la google-client-api de java porque es un quilombo y no entendí cómo usarla, así que me conecto a los webservices de google directamente.
No hay comentarios.:
Publicar un comentario