Que signifie VK en tant qu'utilisateur autorisé ?

Cet article est principalement une traduction d'une leçon du rtfm officiel, à savoir le composant « Connexion », mais avec des inserts de traducteur. Sur meilleure traduction Je n'y vais pas, mais l'essentiel devrait être clair au final. Cependant, je n’ai toujours pas trouvé de traduction en russe.
Cette leçon, bien que qualifiée de « basique », a beaucoup pièces interconnectées. DANS cette leçon nous discuterons des pages qui doivent être créées, des morceaux (fragments de code) et des extraits qui doivent être publiés sur les pages pour une autorisation complète de l'utilisateur.

Les nombres entre parenthèses sont des ID de ressources. Il s'agit de page_id, cela peut différer pour vous. Ils sont sélectionnés ici simplement par commodité.

Nous créons les pages nécessaires

Avant de publier des morceaux contenant des fragments de code, nous allons créer cinq pages.
  • Page de connexion (1) : page contenant le formulaire de connexion
  • Réinitialiser le mot de passe (2) : page où les utilisateurs peuvent demander la récupération du mot de passe
  • Gestionnaire de réinitialisation de mot de passe (3) : page cachée, ce qui réinitialisera le mot de passe. Les utilisateurs ne le verront pas.
  • Page réservée aux utilisateurs (4) : une page dont le contenu n'est visible que par les utilisateurs autorisés du site
  • Page de sortie (5) : la page vers laquelle l'utilisateur est redirigé après s'être déconnecté avec succès
Voici à quoi ressemble mon arborescence de ressources : à l'heure actuelle. Gardez à l’esprit que votre ID de ressource sera différent. DANS dans cet exemple Il n'y a rien à part des pages pour le composant « Connexion ».

Ensuite, nous devons attribuer droits corrects pour les utilisateurs et les ressources.

Créer les groupes d'utilisateurs et les groupes de ressources nécessaires

MODX Revo a très système flexible les détails des droits en ce qui concerne les autorisations des utilisateurs, mais dans cette rubrique, nous ne ferons que ce dont nous avons besoin sans approfondir le sujet. Alors commençons.
1. Sécurité → Groupes de ressources
Cliquez sur « Créer un groupe de ressources » et nommez-le « Pour les utilisateurs uniquement », par exemple. Cliquez sur « Enregistrer » et c'est tout, nous ne changeons rien d'autre sur cette page.


2. Sécurité → Contrôle d'accès
Dans le premier onglet « Groupes d'utilisateurs », cliquez sur « Nouveau groupe d'utilisateurs ». Nouveau groupe Appelons-le « Utilisateurs » et cliquez sur « Enregistrer ». Le groupe d'utilisateurs aura accès aux ressources « Utilisateurs uniquement ». Nous découvrirons pourquoi nous en avons besoin un peu plus tard dans cette leçon.


3. Sur la même page ( Sécurité → Contrôle d'accès), cliquez clic droit passez la souris sur le groupe d'utilisateurs créé et sélectionnez « Modifier le groupe d'utilisateurs ».



Ensuite, allez dans l'onglet « Accès aux groupes de ressources » et cliquez sur « Ajouter un groupe de ressources ». Pour bon fonctionnement, il doit y avoir au moins les paramètres suivants :
Groupe de ressources : Utilisateurs uniquement (celui que nous venons de créer)
Rôle minimum : Membre-9999
Politique d'accès : Charger, lister et afficher
Contexte: la toile
Et nous économisons.



4. Sécurité → Gestion des utilisateurs
Nous créons un « nouvel utilisateur » et vérifions ainsi comment fonctionnera la différenciation des droits d'accès des utilisateurs.
DANS dans ce cas, utilisez un simple identifiant et un mot de passe, car, comme je l'ai écrit ci-dessus, il est important pour nous de nous assurer que nouvel utilisateur se trouve dans le groupe "Utilisateurs". Pour cela, rendez-vous dans l'onglet « Droits d'accès » et cliquez sur « Ajouter un utilisateur au groupe ».
Groupe d'utilisateurs : Utilisateurs
Rôle: Membre
Cliquez ensuite sur « enregistrer » dans la fenêtre, puis encore dans le coin droit du panneau de commande.



Cela devrait garantir qu'un nouvel utilisateur peut se connecter avec les droits « Utilisateur » pour afficher la page avec les droits « Utilisateurs uniquement ».
Revenons maintenant aux pages pour ajouter des extraits et des extraits de code aux pages correspondantes.

Ajouter des extraits aux pages

Page de connexion (1)

Placez l'extrait de code d'appel suivant sur la page de connexion des utilisateurs.
[[!Se connecter? &loginTpl=`lgnLoginTpl` &logoutTpl=`lgnLogoutTpl` &errTpl=`lgnErrTpl` &loginResourceId=`4` &logoutResourceId=`5`]]
Le morceau (fragment de code) qui affiche le formulaire de connexion doit également inclure un lien vers la page « récupération de mot de passe ». Regardons ce que nous avons dans l'appel du formulaire :
&loginTpl=`lgnLoginTpl` - le chunk lgnLoginTpl est responsable du formulaire de connexion si l'utilisateur n'est pas autorisé
&logoutTpl=`lgnLogoutTpl` - si l'utilisateur est autorisé, alors le contenu du chunk lgnLogoutTpl lui sera donné
&errTpl=`lgnErrTpl` - si les données d'autorisation sont mal saisies, ou en un mot simple« erreur », le chunk lgnErrTpl sera affiché
&loginResourceId=`4` - où rediriger l'utilisateur après une autorisation réussie. Spécifié comme ID de ressource, dans ce cas 4.
&logoutResourceId=`5` - si l'utilisateur est autorisé, alors lors de la déconnexion, il sera redirigé vers une page avec un ID égal à 5.
Je voudrais également noter que ces morceaux sont standard, vous pouvez créer vos propres morceaux pour répondre à tous les goûts, mises en page et implémentations. Cela permet d'afficher le formulaire de connexion/déconnexion, etc. sous n'importe quelle forme souhaitée, et sans créer de chaos avec le code. Modèles standards, d'ailleurs, peut également être modifié.
Voici le code qui sera remis aux utilisateurs qui ne se sont pas encore connectés, autrement dit le « formulaire de connexion ». Morceau - lgnConnexionTpl.
[[+erreurs]]
[[+Message d'action]] [[+login.recaptcha_html]]
Vous avez oublié votre mot de passe ?
Vous pouvez mettre un lien vers « Mot de passe oublié » (Réinitialiser le mot de passe) dans votre modèle et créer un lien vers celui-ci par identifiant. Dans mon cas, l'ID de ressource pour la récupération du mot de passe est 2.

Réinitialisation du mot de passe (2)

Commençons par le fait que cette page est le plus souvent masquée du menu. Il s'agit principalement d'un formulaire grâce auquel les utilisateurs peuvent réinitialiser leur mot de passe. Ici, je voudrais vous expliquer que la page de réinitialisation du mot de passe (avec l'ID 2 dans mon cas) offre la possibilité de dire que le mot de passe doit être réinitialisé, et la réinitialisation elle-même est effectuée par le « Réinitialisation du mot de passe, gestionnaire (3) "page.
Appelez le formulaire de réinitialisation du mot de passe avec le code suivant:
[[!Mot de passe oublié ? &resetResourceId=`3` &tpl=`lgnForgotPassTpl`]]
Regardons le défi :
&resetResourceId=`3` - la page du gestionnaire (dans mon cas avec l'ID 3), c'est celle qui se réinitialise.
&tpl=`lgnForgotPassTpl` - un morceau avec un code qui contient un formulaire de réinitialisation de mot de passe.
Pour comprendre pourquoi le handler est utilisé et comment il fonctionne, je vous propose de regarder l'image :


Gestionnaire de réinitialisation de mot de passe (3)

Cette page doit être masquée dans tous les menus. Cependant, même s’il existe un lien vers celui-ci, il n’aura tout simplement aucun sens.
Son essence est la suivante. Lorsqu'un utilisateur demande une réinitialisation de son mot de passe, il reçoit un email avec ce lien, ainsi qu'un hash. Lorsqu'un utilisateur clique sur un lien provenant d'un e-mail, MODx réinitialise le mot de passe et redirige l'utilisateur vers une page de connexion.
Sur la page du gestionnaire, l'extrait est appelé comme ceci :
[[!Réinitialiser le mot de passe ? &loginResourceId=`1`]] - &loginResourceId=`1` indique vers quelle page rediriger, dans notre cas vers la page avec l'ID 1, où se trouve un formulaire de connexion.

Page réservée aux utilisateurs (4)

Il s'agit d'une page confirmant que l'utilisateur s'est connecté avec succès. Le contenu de cette page est uniquement disponible utilisateurs autorisés.
Pour que la page ne soit accessible qu'aux utilisateurs autorisés, nous devons lui attribuer des droits. Pour cela, dans l’arborescence des ressources, cliquez sur « Page réservée aux utilisateurs ». Ensuite, allez dans l'onglet « Droits d'accès », nous y voyons le texte « Pour les utilisateurs uniquement » et à droite de celui-ci, dans la colonne « Accès », nous voyons une case à cocher non cochée. Cochez la case et cliquez sur « Enregistrer ».


Page de sortie (5)

Il s'agit de la page sur laquelle les utilisateurs accèdent après s'être déconnectés avec succès de leur compte. La page ne doit contenir que les éléments de base, comme un message d'adieu ou un lien vers un formulaire de connexion. Par exemple:

Merci de votre visite ! Revenez bientôt!

En plus

Page de sortie (5)

Ce n'est pas obligatoire, mais pour les tests et en général, pour la commodité lors du développement, vous pouvez obtenir lien spécial pour sortir. Pour cela nous créons « nouveau lien"(lien Web) et remplissez sa page avec l'ID 1. Par exemple, appelez la page avec le lien comme ceci :
[[~1 ? &service=`déconnexion`]]
Cela peut être utilisé pour afficher comme ceci :
Se déconnecter

Erreurs possibles

Après avoir collecté toutes les pages, les avoir liées, configuré les droits d'accès, il faut tout vérifier. Si tout fonctionne selon notre plan, alors en entrant, nous serons redirigés vers la page « Utilisateurs uniquement ». Nous pouvons nous déconnecter de notre compte via la page de connexion, car si nous y sommes autorisés, alors un lien pour se déconnecter apparaîtra sur la page de connexion. Après vous être déconnecté avec succès, vous devriez être redirigé vers la « page de déconnexion ».

Je n'arrive pas à me connecter !

En règle générale, de tels problèmes surviennent lorsque les identifiants de page sont incorrectement spécifiés, que les noms de blocs sont mal orthographiés ou que des blocs sont manquants. crochets. Vérifiez attentivement les codes.

De plus, il convient de rappeler que tous les extraits écrits ci-dessus doivent être appelés non mis en cache. Bien sûr, certains fonctionneront probablement sous forme de cache, mais la plupart ne le feront pas. Vous pouvez l'appeler sous forme non mise en cache en utilisant point d'exclamation, par exemple, vous devez écrire comme ceci :
[[!Se connecter]]
Mais pas comme ça :
[]

Je n'arrive pas à me déconnecter de mon compte !

L'une des raisons pour lesquelles vous ne pouvez pas vous déconnecter de votre compte est que le lien de déconnexion pointe vers une page sur laquelle il n'y a pas de formulaire de connexion. Il convient de rappeler que le bouton de déconnexion doit pointer vers la page contenant le formulaire de connexion.

Il se peut également que lors de la réinitialisation du mot de passe, e-mail le message n'arrive pas. Dans ce cas, cela vaut la peine de paramétrer l'envoi de mail sur votre serveur.

Posez des questions, si je connais la réponse, je vous aiderai certainement. La prochaine leçon sera traduite en temps libre. Vos commentaires seront pris en compte :)
Je m'excuse d'avoir formaté le code - c'est la première fois, mais comment le formater n'est écrit nulle part...

Cet article considère une application de bureau en Java comme exemple, cependant principes généraux et le schéma sera similaire pour toute autre langue.

Comment se produit l’autorisation ?

L'autorisation sur VKontakte n'est pas différente de toute autre autorisation via serveur tiers. Ce processus a été parfaitement décrit par un utilisateur de StackOverflow qnub:

  1. Sur le service (dans ce cas VK), vous devez enregistrer l'application et recevoir une clé API.
  2. Après cela, l'application (le site) peut demander les données personnelles de l'utilisateur à un service tiers via cette même API, pour laquelle :
    • rediriger l'utilisateur (le navigateur de l'utilisateur en lui envoyant une réponse HTTP 302 Redirect) en lien spécialement généréà un service fournissant une API ;
    • l'utilisateur y effectuera certaines actions, se connectera probablement et autorisera l'accès aux données.
  3. Une fois les actions terminées, l'utilisateur sera redirigé service tiers en utilisant la même redirection 302 vers l'URL passée dans les paramètres lien spécialement généré.

Première étape. Enregistrez votre candidature et obtenez une clé

Cette étape est la plus simple. Vous devez vous rendre sur la page VK pour les développeurs : https://vk.com/dev- et cliquez sur le bouton « Créer une application ». Nous indiquons le type comme « Application autonome », le nom, bien entendu, est arbitraire. Après cela, dans la section "Mes candidatures"(qu'en pensez-vous ?) votre candidature apparaîtra. N'hésitez pas à cliquer sur « modifier », puis allez dans la section « Paramètres » - là, dans la première ligne, vous verrez l'inscription « ID d'application : 1234567 " Ces numéros sont tout ce dont vous devez vous souvenir pour vous connecter.

Notez qu'il ne sert à rien de masquer l'ID de l'application - il est affiché publiquement, par exemple, lors de la publication d'un message sur le mur via cette application. Ni les jetons ni aucune autre information ne peuvent être volés à l'aide d'un identifiant. En fait, vous pouvez même utiliser mon identifiant d'application (si vous avez besoin d'écrire un petit script pour vous-même).

Deuxième étape. Générer un lien spécial

Ensuite, vous devez diriger l'utilisateur vers une adresse spécialement générée (ses mentions sont mises en gras dans la première section de l'article), où il confirmera qu'il souhaite autoriser votre application à effectuer certaines actions avec son compte. Comment se forme ce lien ?

Ce processus est décrit en détail dans documentation. Cependant, si vous vous êtes tourné vers cet article, je suppose que vous n'aviez pas suffisamment d'informations dans la documentation et je vais donc tout raconter dans mes propres mots. Le lien a vue suivante: hôte?paramètres. Les paramètres prennent la forme de plusieurs paires clé=valeur séparées par des symboles &.

L'hôte reste toujours le même : https://oauth.vk.com/authorize. L'ensemble des paramètres est également inchangé :

  • client_id. Ici, il convient d'indiquer les mêmes chiffres que ceux que nous avons obtenus lors de la première étape.
  • redirect_uri. L'adresse vers laquelle l'utilisateur sera redirigé. Pour les applications autonomes, il s'agit uniquement de https://oauth.vk.com/blank.html.
  • afficher. Ce paramètre détermine la manière dont la page de connexion sera affichée. Trois options sont disponibles : page, popup et mobile. Si vous n'êtes pas sûr, utilisez la page .
  • portée. Dans ce paramètre, vous devez lister les paramètres d'accès dont vous avez besoin, séparés par des virgules. Liste complète paramètres disponibles donné sur page correspondante documentation. Veuillez noter que vous ne pouvez rien spécifier du tout et simplement ne pas écrire ce paramètre. Pour connaître les options d'accès dont vous avez besoin, consultez documentation de la méthode que vous allez utiliser.
  • type_réponse. Nous spécifions le jeton et passons à autre chose.
  • v. Version API. Actuel - 5.59 .

https://oauth.vk.com/authorize?client_id=1&display=page&redirect_uri=http://example.com/callback&scope=friends&response_type=token&v=5.59

Troisième étape. Quelle est la prochaine étape ?

http://REDIRECT_URI#access_token= JETON 3&expires_in= TEMPS&identifiant_utilisateur= IDENTIFIANT

Nous sommes intéressés JETON. Comment diriger l'utilisateur vers une page depuis une application Java et comment obtenir l'adresse de la page vers laquelle VK le redirigera (afin d'en extraire un token) ? Il y a deux manières.

Si vous décidez d'emprunter cette voie, il vous suffit d'ouvrir le navigateur par défaut du système avec le lien que vous avez reçu ci-dessus et de dire d'une manière ou d'une autre à l'utilisateur qu'il doit copier le jeton de l'URL et le coller dans un champ. Évidemment, cette méthode a une UX épouvantable, mais elle peut être mise en œuvre rapidement et facilement. C'est tout à fait approprié si vous écrivez une application pour vous-même - pour télécharger de la musique ou recevoir des notifications. Il est mis en œuvre de la manière suivante :

Chaîne publique AskToken (String link) lance IOException, URISyntaxException ( // Ouvre le lien dans le navigateur par défaut Desktop.getDesktop ().browse (new URI (link)); // Demande à l'utilisateur de saisir manuellement le jeton du navigateur, renvoie JOptionPane.showInputDialog (" Veuillez saisir le paramètre access_token depuis le navigateur : "); )

Bourgeois, via des composants web

Si vous décidez d'emprunter cette voie, vous devrez alors utiliser une bibliothèque GUI tierce (ou au moins JavaFX), qui possède son propre composant de navigateur dans son arsenal. Votre programme aura tout pouvoir sur un tel navigateur, et vous pourrez récupérer l'adresse vers laquelle VK vous a redirigé, logiciel. Dans JavaFX, cela peut être implémenté comme suit :

Importer javafx.application.Application ; importer javafx.beans.value.ChangeListener ; importer javafx.beans.value.ObservableValue ; importer javafx.scene.Scene ; importer javafx.scene.web.WebEngine ; importer javafx.scene.web.WebView ; importer javafx.stage.Stage ; classe publique Main étend l'application (public finale statique Chaîne REDIRECT_URL = "https://oauth.vk.com/blank.html" ; chaîne finale statique publique VK_AUTH_URL = ""; //FAIRE!!! chaîne statique publique tokenUrl ; public static void main(String args)( System.out.println(Main.getTokenUrl()); ) public static String getTokenUrl())( launch(Main.class); return tokenUrl; ) @Override public void start(Stage PrimaryStage ) lève une exception (finale Vue WebView= nouveau WebView();

Moteur WebEngine final = view.getEngine();

moteur.load(VK_AUTH_URL);

PrimaryStage.setScene (nouvelle scène (vue));

primaireStage.show();

Plus récemment, le réseau social VKontakte a été fermé, c'est-à-dire le contenu n'a pas été indexé par les moteurs de recherche. Les webmasters en ont immédiatement profité, utilisant des analyseurs pour extraire les discussions du réseau social et en remplir leurs sites. Il en va de même pour les profils : leurs informations ont également été collectées à l'insu des personnes enregistrées sur le réseau social.

Il était impossible de lutter contre l'émergence de tels sites et les propriétaires de VKONTAKTE ont pris des mesures radicales : ils ont ouvert un réseau social d'indexation. Immédiatement, des dizaines de milliers de groupes et des millions d'utilisateurs sont apparus sur Yandex et Google. Tout le monde n’a pas aimé ça. Imaginez que quelqu'un saisisse votre prénom et votre nom lors d'une recherche et tombe immédiatement sur un profil VKontakte, où presque toutes les données personnelles sont souvent indiquées.

Par conséquent, il a été décidé d'ajouter un élément aux paramètres de confidentialité - « qui est visible sur Internet ma page" avec les options suivantes :

  • Uniquement les utilisateurs de VKontakte
  • Tout le monde sauf les sites de recherche

"Si vous cachez une page de sites de recherche, il est introuvable dans une recherche sur Internet. Par exemple, dans Yandex ou Google. Les moteurs de recherche stockent les données collectées pendant un certain temps. La page disparaîtra donc des résultats de recherche. pas tout de suite et peut être disponible en recherche jusqu’à un mois.

Laissez-moi vous expliquer un peu. Malgré la puissance des moteurs de recherche, les résultats ne sont pas mis à jour immédiatement, mais lors de ce qu'on appelle des « mises à jour ». Yandex a besoin d'environ 2 semaines, Google un peu moins. Ne pensez donc pas que dès que vous bloquez la visibilité dans les moteurs de recherche, votre page disparaîtra immédiatement. Hélas, non.

Toutes les options sont définies sur la page (https://vk.com/settings?act=privacy) Mes paramètres —-> Confidentialité (autre onglet).



Désormais, lorsqu'il essaiera d'afficher vos informations, un utilisateur non autorisé verra le message suivant :



Mais malheureusement, VKontakte dispose d'une faille grâce à laquelle une personne non enregistrée sur le réseau social peut trouver le profil souhaité. réseaux.

Vous pourrez voir un avatar, une ville, un établissement d'enseignement. Mais lorsque vous essayez d'accéder au profil complet, vous verrez également une erreur : "La page est disponible uniquement pour les utilisateurs autorisés".

Vous savez maintenant pourquoi ce message apparaît. Passe une bonne journée!



Des questions ?

Signaler une faute de frappe

Texte qui sera envoyé à nos rédacteurs :