API Instagram: les oscilloscopes fonctionnent-ils avec le flux d'authentification implicite OAuth2?
Je suis en train de faire des demandes à l'encontre de l'Instagram de l'API à partir d'une application mobile. Actuellement, je suis juste de diriger l'utilisateur vers le Instagram auth url et en spécifiant le type de réponse à "access_token". La spécification de cette response_type est connu comme implicite auth.
Explicite auth: response_type=code
Implicite auth: response_type=access_token
Je suis en essayant de contourner besoin de se lever d'un service web pour faciliter explicite auth. Ce serait nécessaire parce que, dans explicite auth flux, l'Instagram de l'API a besoin de faire un appel à une URL de redirection et de passer dans un "code" de paramètre. Le code pourrait ensuite être utilisé par mon code côté serveur pour faire une demande finale d'Instagram pour un jeton d'accès.
Il est beaucoup plus efficace pour une application mobile pour une utilisation implicite de flux car aucune autre privé entretenu auth service doit être levé pour les traiter.
Instagram prend en charge les portées suivantes:
- de base - lire toutes les données liées à l'utilisateur (par ex.
suivant/suivi-par des listes, des photos, etc.) (accordée par défaut) - commentaires - de créer ou de supprimer des commentaires sur la place de l'utilisateur
- relations - de suivre et d'arrêter de suivre des utilisateurs sur la place de l'utilisateur
- aime - aime de plus et contrairement à des articles sur la place de l'utilisateur
Quand je fais de tout autre type de portée de la spécification de la part "de base", j'obtiens la réponse suivante lorsque l'utilisateur fournit les informations d'identification à la auth URL:
{"code": 400, "error_type": "OAuthException", "error_message": "Invalid scope field(s): basic+likes"}
N'importe quelle combinaison de champs autres que "de base" donne la même réponse.
Donc, ma question est la suivante:
- Est explicite auth nécessaire pour spécifier les étendues au-delà "de base"??
- Ai-je besoin de préciser response_type=code de commande pour de longues étendues de travail?
- Est-ce un Instagram de prescription, ou est-ce une limitation du protocole OAuth 2.0?
Merci d'avance.
source d'informationauteur NovaJoe
Vous devez vous connecter pour publier un commentaire.
J'ai juste essayé avec implicite oauth flux avec mon client_id et la portée=base+aime et cela a fonctionné. Remplacer l'url ci-dessous avec votre client_id et redirect_uri, et d'essayer.
Peut être Instagram n'est pas de laisser la place à d'autres que de base, avec de nouveaux comptes clients...
La réponse est ici que OUIles étendues peuvent être demandés par implicite auth flux de l'amende juste. Mon problème était lié à un OAuth composant que j'ai été en utilisant. Le composant a été silencieusement URL de codage de la valeur de la portée param, qui a été rejetée par le Instagram auth point de terminaison. J'ai mis à jour le composant (Xamarin.Auth) pour accueillir un non-codées portée param et a émis une demande d'extraction.
Grâce à @krisak pour offrir un lieu de travail de l'URL que j'ai pu tester.
Donc j'ai eu des problèmes similaires concernant le codage de l' + lorsque vous essayez d'obtenir l'autorisation pour plusieurs étendues (de base, aime, commentaires). La solution que j'ai trouvé est d'utiliser des espaces entre les différents périmètres:
Dans le fichier config/initializers/omniauth.rb fichier:
Malheureusement partir du 14 avril 2015 de nouveaux clients ne peuvent pas avoir accès pour toute la portée, mais de base. Message officiel peut être trouvé à la configuration du client page:
Le message fait référence suivante entrée de blog: http://developers.instagram.com/post/116410697261/publishing-guidelines-and-signed-requests
Instagram nécessite demande à être envoyé pour activer étendues pour votre application (IDENTIFIANT client), mais votre application doit répondre à certaines conditions décrites dans l'entrée de blog.
j'ai le même problème, j'ai trouvé cette solution et fonctionne très bien
Accédez à Gérer les clients dans le cadre d'instagram/développeur. Ensuite, cliquez sur modifier dans votre application et décochez la case Désactiver Implicite OAuth. Il fonctionne maintenant comme prévu.
Instragram changé cela pour une raison bien, devrait donc probablement réfléchir à deux fois avant d'aller public avec votre application: http://instagram.com/developer/restrict-api-requests/
À ce moment, Mai 2015OUI.
Comme expliqué sur instagram documentation sur l'authentification:
Vous devez d'abord enregistrer votre application ici et puis, avec le CLIENT ID fourni par instagram, vous pouvez faire cette demande:
Où vous devez mettre votre client_id et redirect_uri.
Juste pour information, dans redirect_uri champ, vous pouvez insérer aussi
vous devez ajouter un "+" entre les étendues comme ça, c'est "de base+commentaires+follower_list+aime+public_content+relations"