Google push notifications-canal de rappel WebHook non autorisé

Je suis confronté à des problèmes avec les notifications push de Google (pour le lecteur). J'utilise le compte de service qui fonctionne parfaitement pour toutes les autres opérations d'entraînement sauf la montre de changement d'entraînement.

ci-dessous est le code d'application qui échoue maintenant avec l'exception "Unauthorized WebHook callback channel". J'ai aussi balancé des requêtes et des réponses qui sont générées lors de la commande.changement.regarder.exécuter est appelé.

l'adresse de notification cible est listée en blanc dans le panneau de contrôle Push APIs & auth (I even Je l'ai listé dans les sources et les referrers Javascript) et maintenant je suis coincé avec cette erreur 401 non autorisée.

est ce que quelqu'un sait où je fais erreur? Merci pour toute aide.

PrivateKey serviceAccountPrivateKey = SecurityUtils.loadPrivateKeyFromKeyStore(SecurityUtils.getPkcs12KeyStore(), p12File, "notasecret", "privatekey", "notasecret");
JsonFactory jsonFactory = new JacksonFactory();
HttpTransport t = GoogleNetHttpTransport.newTrustedTransport();
GoogleCredential gc = new GoogleCredential.Builder()
                .setTransport(t)
                .setJsonFactory(jsonFactory)
                .setServiceAccountScopes(Collections.singleton(DriveScopes.DRIVE))
                .setServiceAccountPrivateKey(serviceAccountPrivateKey)
                .setServiceAccountId(Config.SERVICE_ACCOUNT_ID)
                .setServiceAccountUser(Config.SERVICE_ACCOUNT_USER)
                .build();

drive = new Drive.Builder(t, jsonFactory, null).setHttpRequestInitializer(gc).setApplicationName(cfg.getStringParam(Config.GAE_APPLICATION_NAME)).build();

// THIS WORKS
Changes.List request = drive.changes().list();
ChangeList changes = request.execute();

// THIS DOES NOT WORK
Channel channel = new Channel();
channel.setId(UUID.randomUUID().toString());
channel.setType("web_hook");
channel.setAddress(Config.PUSH_NOTIFICATION_ADDRESS);
Channel c = drive.changes().watch(channel).execute();


-------------- REQUEST  --------------
POST https://www.googleapis.com/drive/v2/changes/watch
Accept-Encoding: gzip
Authorization: Bearer XXX
User-Agent: XXX Google-HTTP-Java-Client/1.17.0-rc (gzip)
Content-Type: application/json; charset=UTF-8
Content-Length: 118

CONFIG: curl -v --compressed -X POST -H 'Accept-Encoding: gzip' -H 'Authorization: Bearer XXX' -H 'User-Agent: XXX Google-HTTP-Java-Client/1.17.0-rc (gzip)' -H 'Content-Type: application/json; charset=UTF-8' -d '@-' -- 'https://www.googleapis.com/drive/v2/changes/watch' << $$$
CONFIG: {"address":"XXX","id":"8078114c-fba0-44e7-a34c-cb391ea40061","type":"web_hook"}

-------------- RESPONSE --------------
401 OK
www-authenticate: Bearer realm="https://accounts.google.com/AuthSubRequest", error=invalid_token

-------------- REQUEST  --------------
POST https://accounts.google.com/o/oauth2/token

-------------- RESPONSE --------------
200 OK
{
  "access_token" : XXX,
  "token_type" : "Bearer",
  "expires_in" : 3600
}

-------------- REQUEST  --------------
POST https://www.googleapis.com/drive/v2/changes/watch

-------------- RESPONSE --------------
401 OK
www-authenticate: Bearer realm="https://accounts.google.com/AuthSubRequest", error=invalid_token

...
...
...

-------------- RESPONSE --------------
200 OK
content-type: application/json; charset=utf-8
cache-control: no-cache, no-store, max-age=0, must-revalidate
pragma: no-cache
expires: Fri, 01 Jan 1990 00:00:00 GMT
date: Wed, 28 May 2014 20:51:19 GMT
content-disposition: attachment; filename="json.txt"; filename*=UTF-8''json.txt
content-encoding: gzip
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 1; mode=block
server: GSE
alternate-protocol: 443:quic
transfer-encoding: chunked

{
  "access_token" : XXX,
  "token_type" : "Bearer",
  "expires_in" : 3600
}

{
 "error": {
  "errors": [
   {
    "domain": "global",
    "reason": "push.webhookUrlUnauthorized",
    "message": "Unauthorized WebHook callback channel: XXX"
   }
  ],
  "code": 401,
  "message": "Unauthorized WebHook callback channel: XXX"
 }
}
12
demandé sur user3686724 2014-05-29 12:15:11

4 réponses

vous devez ajouter votre domaine à la console des développeurs.

Comment faire:

  1. connectez-vous à la Google Developers Console
  2. Sélectionnez votre projet
  3. sous' APIS & AUTH 'sélectionnez ' Push'
  4. Cliquez sur "Ajouter des domaines'
  5. entrez les domaines nécessaires (seul le domaine est nécessaire, pas l'url de notification entière)
  6. cliquez sur le bouton' Ajouter des domaines'

après cela, cela devrait fonctionner à moins que il y a autre chose qui ne va pas avec ce que vous faites :p

12
répondu natronite 2014-07-05 17:15:22

Pour moi, comme je l'ai dit dans un commentaire ci-dessus,

la vérification de domaine n'était pas sauvegarder dans la console de développeur de google (rafraîchir la page et elle avait disparu). Le problème a finalement fini par être que j'étais connecté en tant que deux comptes google, Mon compte gmail et mon compte d'entreprise. Ajouter la vérification de domaine a semblé se tromper sur le compte et ne pas enregistrer les paramètres de domaine.

essayez de vous connecter en utilisant un navigateur différent ou une session incognito si vous utilisez plusieurs google compte.

4
répondu John Naegle 2016-09-08 15:51:17

Pour moi, je voulais que le rappel webhook URL https://test-apis.domain.io. Donc pour la vérification de domaine, j'ai ajouté test-apis.domain.io et ensuite essayé de modifier l'enregistrement TXT mais il n'a jamais fonctionné (validation).

Enfin fini de vérifier que domain.io avec la même méthode. Après cela, j'ai pu ajouter le domaine test-apis.domain.io à l'écran "Vérification du domaine". Espérons que cela aide les autres.

0
répondu Aniket Thakur 2018-08-30 09:33:31

j'ai confirmé mon domaine, vérifié mon SSL, mais le problème n'a pas disparu.

finalement j'ai trouvé la solution: utiliser Service De Compte Clé dans la Console des développeurs Google (pas la clé API et pas L'ID du client OAuth).

0
répondu Artemius Pompilius 2018-10-08 16:15:42