api - que - Usando oauth2_access_token para obtener conexiones en linkedIn
que significa 1er y 2do en linkedin (2)
Estoy tratando de obtener las conexiones en linkedIn utilizando su API , pero cuando intento recuperar las conexiones obtengo un error 401 no autorizado.
en la documentación oficial dice
Debe usar un token de acceso para realizar una llamada autenticada en nombre de un usuario
Realice las llamadas a la API Ahora puede usar este access_token para hacer llamadas a la API en nombre de este usuario agregando "oauth2_access_token = access_token" al final de la llamada API que desea realizar.
La llamada API que estoy tratando de hacer es la siguiente
Error -> http://api.linkedin.com/v1/people/~/connections:(id,headline,first-name,last-name)?format=json&oauth2_access_token= access_token
He intentado hacerlo con el siguiente punto final sin ningún problema.
esta lista de puntos finales para las conexiones API se describe aquí http://developer.linkedin.com/documents/connections-api Acabo de copiar y pegar un punto final a partir de ahí, por lo que la pregunta es cuál es el problema con el punto final para obtener las conexiones ? ¿Qué me estoy perdiendo?
EDITAR: para la Url preAuth que estoy usando
https://www.linkedin.com/uas/oauth2/authorization?response_type=code&client_id= ConsumerKey & scope = r_fullprofile% 20r_emailaddress% 20r_network & state & state = NewGuid & redirect_uri = Encoded_Url
https://www.linkedin.com/uas/oauth2/accessToken?grant_type=authorization_code&code= QueryString_Code & redirect_uri = EncodedCallback & client_id = ConsummerKey & client_secret = ConsumerSecret
adjuntamos la pantalla de inicio de sesión solicitando los permisos
EDIT2: Cambió a https y funcionó como un encanto!
Los tokens de acceso se emiten para un scope
específico que describe la extensión del permiso que está solicitando. Cuando inicia la transacción de autenticación, agrega un parámetro específico (denominado alcance ) que solicita al usuario que acceda a acceder a lo que desea (en este caso, sus conexiones). Si no recuerdo r_network
, en LinkedIn es r_network
.
Verifique su documentación aquí: http://developer.linkedin.com/documents/authentication#granting
Entonces, tu llamada está perfectamente bien, pero es muy probable que access_token no tenga suficientes privilegios.
apiHelper.getRequest(getActivity(),"https://api.linkedin.com/v1/people/~/connections?modified=new", new ApiListener() {
@Override
public void onApiSuccess(ApiResponse response) {
}
@Override
public void onApiError(LIApiError error) {
}
});
Si está intentando obtener conexiones de usuarios usando el SDK de LinkedIn para Android, como en el fragmento anterior,
Compruebe si hay permisos en el SDK en esta clase com.linkedin.platform.utils.Scope.
Asegúrese de que r_network esté disponible cuando construya su alcance. Ejemplo
public static final LIPermission R_NETWORK = new LIPermission("r_network", "Your network");
Ahora se puede usar así para construir el alcance
Scope.build(Scope.R_BASICPROFILE, Scope.R_EMAILADDRESS, Scope.W_SHARE, Scope.R_FULLPROFILE, Scope.R_CONTACTINFO, Scope.R_NETWORK)