6
votes

Android LinkedIn SDK produit des jetons d'accès inutilisables

Qu'est-ce que j'essaie d'accomplir:

  • authentifier avec LinkedIn via leur SDK Android LI>
  • Fetch Profil de l'utilisateur pour obtenir leur utilisateur LI>
  • Créez un nouvel utilisateur contre notre service interne LI> ul>

    Jusqu'à présent, j'ai pu authentifier avec LinkedIn, récupérer un jeton d'accès et utiliser le service de LinkedIn pour obtenir leur ID utilisateur. P>

    Le flux ressemble un peu à ceci xxx pré>

    En retour dans mon application, j'attrape les données de l'intention à l'aide du code ci-dessous p> xxx pré>

    Cette partie semble être fonctionnelle et donne un ONAUTUHSUCCESSU STRUT> de la configuration forte> authlistener forte> dans l'initialisation forte> LisessionManager forte>. P>

    Post Success Je suis capable d'utiliser l'accès fourni jeton avec l'apihelper fourni fourni fort> pour obtenir le profil de base de l'utilisateur p> xxx pré>

    Ceci retourne réellement avec les informations de profil utilisateur de base. p>

    C'est ici que les êtres problématiques forts> Je ne peux utiliser que ce jeton d'accès pour passer des appels à l'aide de l'apihelper Apihelper forte>. Lorsque vous essayez d'utiliser le jeton d'accès fourni ailleurs (côté serveur, test de postman / apigée), il renvoie toujours cette réponse. P>

    { 
    "errorCode": 0,
    "message": "Unable to verify access token",
    "requestId": "M9J2NBQV9J",
    "status": 401,
    "timestamp": 1430922872474 
    }
    


0 commentaires

3 Réponses :


5
votes

Comme indiqué dans la documentation d'authentification de SDK Android de LinkedIn ( https://developer.linkedin.com / Docs / Android-SDK-Auth ),

Jetons d'accès côté serveur mobiles contre serveur

Il est important de noter que les jetons d'accès acquis via le SDK mobile ne sont utilisables que avec le SDK mobile et ne peuvent pas être utilisés pour effectuer des appels d'API de repos au côté serveur.

De même, les jetons d'accès que vous avez déjà stockés à partir de vos utilisateurs qui authentifient à l'aide d'un appel d'API de repos de serveur ne fonctionneront pas avec le SDK mobile.


1 commentaires

Merci pour la réponse rapide, Justin! Aurait dû attraper ça. Appréciez l'aide.



1
votes
LISessionManager sessionManager = LISessionManager.getInstance(getApplicationContext());
LISession session = sessionManager.getSession();

boolean accessTokenValid = session.isValid();

String respon ="";

if(accessTokenValid) {
    String url = "https://api.linkedin.com/v1/people/~?format=json";
    //String url = "https://api.linkedin.com/v1/people/~:(id,first-name,last-name,picture-url)";
    APIHelper apiHelper = APIHelper.getInstance(getApplicationContext());
    apiHelper.getRequest("your activity", url, new ApiListener() {
        @Override
        public void onApiSuccess(ApiResponse apiResponse) {
            respon = apiResponse.toString();
            Log.e("Response ", respon);                         
        }

        @Override
        public void onApiError(LIApiError LIApiError) {
            Log.e("error", LIApiError.toString());
        }
    });
}

0 commentaires

3
votes

tandis que LinkedIn indique qu'il n'est pas possible d'utiliser un jeton d'accès fourni par le SDK mobile pour créer des appels d'API côté serveur, j'ai pu effectuer des appels simplement en ajoutant x-li-src: msdk < / code> dans l'en-tête de la demande.


0 commentaires