def linkedin_dissocier(): """ Virer l'association au compte linkedin d'un ancien :return: """ if current_user.id_ancien is not None: app.logger.info( "LINKEDIN - successful unlink for user : %s, ancien : %s", current_user.id, current_user.id_ancien) annuaire.update_linkedin_ancien(current_user.id_ancien) flash("Compte LinkedIn dissocié de l'annuaire", "success") return redirect(url_for('compte'))
def linkedin_associer(): """ Fonction de callback appelée par LinkedIn. Associer un compte ancien à un compte LinkedIn. Permet de : - Afficher le widget linkedin dans le profil de l'Ancien - Se connecter avec LinkedIn. Worfklow : - Request un token - Faire un appel sur l'API "people" pour obtenir l'id_linkedin et l'url du profil. - Récupérer ces données et les insérer en base """ success = False app.logger.info( "LINKEDIN - begin authorize for ancien : %s, user : %s", current_user.id_ancien, current_user.id) if current_user.id_ancien is not None: ancien = annuaire.find_ancien_by_id(current_user.id_ancien) if ancien is not None: access_token = __get_linkedin_token(url_for('linkedin_associer', _external=True)) api_url = "https://api.linkedin.com/v1/people/~:(id,public-profile-url)?oauth2_access_token=%s" % access_token api_req = requests.get(api_url) if api_req is not None and api_req.status_code == requests.codes.ok: parsed = etree.fromstring(api_req.text.encode("utf-8")) if parsed is not None: id_linkedin = None url_linkedin = None for e in parsed: if e.tag == "id": id_linkedin = e.text elif e.tag == "public-profile-url": url_linkedin = e.text if url_linkedin is not None and id_linkedin is not None: success = annuaire.update_linkedin_ancien(ancien['id_ancien'], id_linkedin, url_linkedin) app.logger.info( "LINKEDIN - successful update for user : %s, ancien : %s, id_linkedin : %s, url public profile : %s", current_user.id, ancien['id_ancien'], id_linkedin, url_linkedin) if not success: app.logger.error( "LINKEDIN - bad people API request for user : %s, code : %s, request response : %s", current_user.id, api_req.status_code, api_req.text) if success: flash("Profil linkedin correctement connecté !", "success") else: flash("Oups ! Il y a eu un problème pendant la connexion. Merci de contacter l'administrateur.", "danger") return redirect(url_for("compte"))