BenLaKnet Posté(e) 14 avril 2011 Share Posté(e) 14 avril 2011 Tout nouveau :) Merci de réorienter le sujet, s'il n'a pas sa place ici. Voila, ça fait quelques temps que j'essaye de programme l'envoi de notification PUSH vers les serveurs de Google et ce en Perl. Je ne comprends pas le problème que je rencontre :(. Le code est pourtant simple, mais quoi qu'il se passe, le service me renvoie une erreur 401, sans autre forme de procès :(. Est ce que quelqu'un ayant déjà utilisé c2dm et éventuellement les libs perl pourrait m'expliquer ou est ce que j'ai un problème. D'avance merci. my %clientlogin = ( accountType => "HOSTED_OR_GOOGLE", Email => $uemail, Passwd => $upass, service => "ac2dm", ); my $ua = LWP::UserAgent->new; my $req = POST($urllogin, Content_Type => 'application/x-www-form-urlencoded', Content => \%clientlogin ); my $res = $ua->request($req); # debug if ($res->is_success) { print "ClientLogin : OK\n" } else { print "ClientLogin Content : " . $res->content . "\n"; } # suite normale if ($res->content =~ /Auth=(.*)/) { print "Auth = $1\n"; my $authtoken = $1; ## Seconde partie : ## On tape la requete sur l'url send du c2dm pour aller chercher les infos my $urlsend = "http://android.apis.google.com/c2dm/send"; #my $urlsend = "https://android.clients.google.com/c2dm/send"; my $regid = "APA91bG8VEmTdTWU1fnuDYPa4iWC8_7xYamOBriXZPQg8hqq4mC8uz45Dxagl9apstgUdxKFzqgQfhpSGJQME_hdm9ZBS9lOoiuKzoTcpT9Xy5gnZ_L6t8E"; my %transformfields = ( "registration_id" => $regid, "collapse_key" => 1, #chaine arbitraire de groupement de message a utiliser pour envoi multiples "data.type" => "NouveauClub", "data.val1" => "Nouveaux", "data.val2" => "totonononana", ); my $ua2 = LWP::UserAgent->new; $ua2->agent("PUSH/0.01a"); my @headers = ("Authorization" => "GoogleLogin Auth=$authtoken"); my $req2 = POST($urlsend, Content_Type => 'application/x-www-form-urlencoded', @headers, Content => \%transformfields, ); my $res2 = $ua2->request($req2); print "RegID : " . $regid . "\n"; #print "Success : " . $res2->is_success . "\n"; #print "Content : " . $res2->content . "\n"; #print Dumper($req2); print Dumper($res2); J'ai obtenu le RegID à partir de l'application en test. Doit elle être signée ou déposé sur les dépôts google pour que les notifications fonctionnent ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 14 avril 2011 Share Posté(e) 14 avril 2011 Je n'ai pas regardé ton code mais l'erreur 401 signifie que tu n'est pas correctement authentifié auprès du service C2Mobile de Google. Lien vers le commentaire Partager sur d’autres sites More sharing options...
BenLaKnet Posté(e) 14 avril 2011 Auteur Share Posté(e) 14 avril 2011 Oui, mais le ClientLogin me renvoie bien un OK. Est ce que seul l'auth token sert à l'authentification, ou est ce qu'il va utiliser aussi le registration ID. Auquel cas, comment savoir ce qui ne va pas :(. J'ai essayé de lancer une commande curl avec les paramètres et même problème. J'en perds mon latin. Lien vers le commentaire Partager sur d’autres sites More sharing options...
moritan Posté(e) 14 avril 2011 Share Posté(e) 14 avril 2011 d'après la doc c'est ton auth_token qui n'est pas bon. J'ai l'impression que tu ne le renvoies pas dans ta requête après ton authentification. Lien vers le commentaire Partager sur d’autres sites More sharing options...
BenLaKnet Posté(e) 22 avril 2011 Auteur Share Posté(e) 22 avril 2011 Beh c'est le résultat qu'annonce la requête de réponse de Google... mais pourtant il est bien la, quand je dump la variable, je le vois bien dans l'aller et le retour. Euh, par contre, je viens de voir qu'il fallait s'inscrire au service c2dm :(, je pensais que ça se faisait tout seul une fois qu'on avait un compte développeur en fait, j'adore comme tout est clair avec Google :(. Je tente et je repasse ;). Merci encore pour la réactivité. Lien vers le commentaire Partager sur d’autres sites More sharing options...
BenLaKnet Posté(e) 26 avril 2011 Auteur Share Posté(e) 26 avril 2011 Bon beh ça n'y change rien, il doit toujours y avoir un problème :(. Je capte pas la façon d'insérer l'en tête, il me parait bon puisque le dump l'indique bien, mais il semble qu'il ne fasse pas la joie de Google :(. Si vous avez 2 ou 3 tuyaux... faites signe :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
Slub.Dev Posté(e) 26 avril 2011 Share Posté(e) 26 avril 2011 Je suis d'accord avec moritan sur l'erreur 401 Indicates that the ClientLogin AUTH_TOKEN used to validate the sender is invalid. Je ne suis pas un spécialiste en perl, mais dans ton code, j'ai l'impression que tu ne remets pas ton cookie obtenu au début, qui doit contenir ton AUTH_TOKEN J'espère que ça t'aidera :) Lien vers le commentaire Partager sur d’autres sites More sharing options...
BenLaKnet Posté(e) 27 avril 2011 Auteur Share Posté(e) 27 avril 2011 Je vais me la taper contre les murs !!! En fait le problème semble venir du auth que j'écrivais Auth :(... M'nant j'ai un "not registered". Comme si mon registration_id n'était pas bon, alors que je l'obtiens via l'application et que je l'enregistre en base de données directement. L'application qui a été développée par une société me l'envoie bien, mieux, je peux stoper la notification et la réactiver, j'en obtiens un nouveau code qui lui non plus ne passe pas :(. J'ai contacté la société pour voir ce qu'ils en pensent. Je vais modifier un peu le prog pour qu'il utilise la base et tente tous les registration_id que j'ai pu obtenir. Si vous voyez quelques chose d'autre ? Y a t il moyen de tester le registration_id d'une façon ou d'une autre pour savoir si c'est lui qui pose problème ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.