2010-06-23 11 views
5

API Google Reader Il semble que vous attendiez quelque chose de différent pour l'authentification aujourd'hui!Problème d'authentification de Google Reader

Il ya environ une semaine, j'ai téléchargé this, et tout fonctionne et j'essaie de le porter en Java. Pour mon code, cela fonctionne parfaitement (avec l'aide de vos exemples) jusqu'à aujourd'hui. J'empile le traçage de tout et j'ai découvert que soudainement le google reader n'accepte pas seulement SID comme cookie. Et bien sûr, je teste également votre exemple d'application et cela ne fonctionne pas aussi bien.

Ensuite, je suis allé altérer les données de Google Reader, et j'ai supprimé toutes les entrées de cookies sauf le SID, et ça ne fonctionne pas (enfin ça donne 401, tout comme mon application et votre échantillon); J'ai testé à nouveau et j'ai trouvé qu'il a maintenant besoin d'une autre entrée de cookie appelée HSID, qui, comparée à SID (qui fait plus de 100 mots de long), est d'environ 10-20 mots. Quelqu'un sait où pouvons-nous obtenir ce HSID supplémentaire? PS Je peux faire le HTTPS pour l'authentification et google me retourne trois jetons (SID, LSID, AUTH). Mais nulle part je ne peux deviner ce qu'est le HSID.

Répondre

10

Je l'ai fait. Oui, le link fourni par sfa est bon. Mais le format est trop confus. Voici comment je le fais.

  1. Publier sur https://www.google.com/accounts/ClientLogin avec les références de connexion. En retour, trois jetons seront passés si la connexion est correcte: a. SID b. LSID c. Auth
  2. Enregistrez l'Auth quelque part dans l'application. Oubliez SID et LSID (je suppose qu'ils pourraient les enlever plus tard)
  3. Dans chaque demande, ajoutez ce qui suit dans l'en-tête: headerName: Autorisation valeur : GoogleLogin auth = {string} Auth par exemple (en Java)

    Méthode HttpGet = new HttpGet (CommandUrl + QueryString); method.addHeader ("Autorisation", "GoogleLogin auth =" + Auth);

Cela fonctionne. Merci à sfa pour le lien.

+0

Je n'ai pas obtenu un 'Auth = ...' dans la réponse de connexion jusqu'à ce que j'ai passé 'service: reader' dans la demande de connexion. –

3

Vous devez ajouter l'autorisation GoogleLogin auth = xxx à votre en-tête. Voici la citation du message:

Voici un rapide résumé de la façon de faire ce changement: Pour les applications ce domaine obtenir déjà l'authentification à partir https://www.google.com/accounts/ClientLogin vous devriez revenir dans le cadre de votre réponse une valeur Auth =. Pour chaque demande que vous envoyez à Reader, vous devez fournir cette valeur comme en-tête HTTP et les choses vont fonctionner comme d'habitude. Le format d'en-tête est : Autorisation: GoogleLogin auth = [valeur obtenue à partir ClientLogin]

Conferm que ça marche! J'ai eu la même erreur et j'ai déjà résolu le problème. See it here.

+0

ouais. Ce que j'essaie de faire est de falsifier le google reader et de voir quel paramètre est nécessaire, comme ce que j'ai écrit dans ma question. Et ça ne marche pas à moins que le HSID soit là. – xandy

1

Voir http://code.google.com/p/google-reader-api/wiki/Authentication pour plus de détails, mais brièvement, que ClientLogin et OAuth sont pris en charge. S'il vous plaît ne continuez pas à simuler le flux du navigateur (avec les cookies SID et HSID), ce qui n'est pas supporté et peut casser à tout moment.

1

Ou pensez à utiliser la classe ReaderTemplate offert ici: http://github.com/wspringer/greader-java/. Il cache essentiellement la complexité du tissage dans les en-têtes appropriés et la (re) authentification.

Questions connexes