0
votes

"La demande de validation de l'abonnement a échoué. La réponse doit correspondre exactement à un paramètre de requête validationtoken."

J'ai l'obligation d'activer une abonnement à des notifications de changement pour OneDrive (ME / Drive / SharedWithme), mais elle donne une erreur lorsque je posterai la charge utile.

Quand je change la ressource vers OneDrive (ME / Drive / Racine ) Quel API Microsoft recommande aux abonnements mais qui donnent également une erreur. P>

I Configurez la permission de l'API pour l'application. Peu de l'autorisation d'application qui nécessitent un consentement d'administration mais ne pouvaient pas être effectuées pour l'utilisateur actuel. Les subventions de l'utilisateur sont indiquées ci-dessous. P>

J'ai créé NGROK URL à rediriger WebServer http: // localhost: 5000 / Notify to ngrok URL. Ceci est mentionné dans la charge utile pour la publication d'un nouvel abonnement. Le code Python est également indiqué ci-dessous. P>

Je veux savoir quelle est la condition préalable à l'abonnement activé. Veuillez fournir une lumière sur l'exigence de licence, les autorisations de l'API et les étendues, le groupe de ressources et le coffre-fort d'azur. Cette exigence est pour l'abonnement de stockage OneDrive. P>

document référencé: https://docs.microsoft.com/en-us/samples/microsoftgraphrow/aspnetcore-webhook-withResource-Data/Sample-Application--Microsoft-graph-change-notifications/ a > P>

Lorsque nous affichons la charge utile pour les nouveaux abonnements, il donne une erreur. P>

Charge utile: { "Changetype": "Mise à jour", "NotificationURL": "https://d76209350b89.ngrok.io/notify", "Ressource": "ME / Drive / Root", "ExpirationDateTime": "2020-07-24T18: 23: 45.9356913z", "Clienttate": "SecretCliverValue", "DateSupportedtlsversion": "v1_2" } p>

abonnements: https://graph.microsoft.com/v1.0/subscriptions P >

@app.route("/notify",methods=['GET','POST'])
    def onedrive():
    valtoken=flask.request.args.get('validationToken')
    valtok=valtoken.replace(':','%3a')
    valt=valtok.replace(' ','+')
    subscribe_url = f'https://062dece903f6.ngrok.io/notify?validationToken={valt}  HTTP/1.1'
    resp = flask.Response(status=200)
    resp.headers['content-type']="plain/text"
    resp.headers['token']=valt
    resp.headers['location'] = subscribe_url
    return resp


6 commentaires

Je pense que le code du point final qui reçoit la demande de validation et reçoit les notifications de modification est manquante, pouvez-vous y inclure s'il vous plaît?


le noeud final qui reçoit la demande de validation


Point de terminaison qui reçoit la demande de validation http_header = {'autorisation': f'bearer {token_response ["AccessToken"]} ',' Type de contenu ':' Application / JSON '} Imprimer (http_header) Post_Data = {"Changetype": "Mise à jour", "NotificationURL": Redirect_uri_2, "Ressource": "ME / Drive / Root", "ExpirationDateTime": "2020-07-22T18: 23: 45.9356913z", "CLIENTSTE": "SecretCliverValue", "DARTSUPPORTEDTLSVERSION" : "v1_2"} res = requestS.post (' .microsoft.com / v1.0 / ... )


Veuillez éditer votre message d'origine pour inclure le code. De cette façon, nous aurons un formatage et tout


reçoit les notifications de changement @ app.route ("/ notifier", méthodes = ['get', 'post']) def onedrive (): valtoken = flask.request.args.get ('validationToken') Valtok = valtoken.replace (':', '% 3a') Valt = valtok.replace ('', '+') S'abonner_url = f ' 062DECE903F6.NGROK.IO/Notify?validationToken= {VALT} http / 1.1 'resp = flacon.response (statut = 200) resp.c.headers [" Type de contenu "] =" "REEP.Headers ['Token'] = Valt resp.Headers [" Emplacement "] = S'abonner_url Retour REME REEE


@ Baywet- Nous suivons ce que vous avez demandé. Code donné ci-dessous @ app.Route ("/ notifier", méthodes = ['get', 'post']) def onedrive (): Imprimer ("Commencé Onedrive") ValToken = Flack.request.args.get ('ValidationToken ) ## VALT = URLLIB.PARSE.QUOTE_PLUS (ValToken) Imprimer (ValToken, 200, {'Type de contenu': 'Texte / Uni'}) Retournez ValToken, 200, {'Type de contenu': 'Plain / Texte' } Jeton recevant comme suit: "Poste / Notify? ValidationToken = validation% 3A + Essais + CLIENT + Applica + accessibilité + FO R + Abonnement + REQRE ST-ID% 3A + 3CA9C029-62 69-1312-5961- 08DA5CA 4F8A3 HTTP / 1.1 "200 error restent les mêmes


3 Réponses :


0
votes

Le type de contenu doit être Texte / CABLE . La valeur de jeton de validation doit être renvoyée comme corps de réponse et non un en-tête. Il n'y a pas besoin d'un en-tête de localisation.

Aussi: Je ne sais pas pourquoi vous remplacez des caractères, mais vous devez simplement décoder et revenir tel quel.


0 commentaires

0
votes
@app.route("/notify",methods=['POST'])
def onedrive():
    valtoken=flask.request.args.get('validationToken')
    data={"validationToken":valtoken}
    resp=app.response_class(response=json.dumps(data),status=200,mimetype='plain/text')
    return resp

6 commentaires

J'ai testé avec le code ci-dessus mais j'ai toujours une erreur.


Lorsque je poste la charge utile pour les nouveaux abonnements, il donne le code d'erreur 400. Charge utile: {"Changetype": "Mise à jour", "NotificationURL": " d76209350b89.ngrok.io/notify ", "Ressource": "ME / Drive / Root", "ExpirationDateTime": "2020-07-24T18: 23: 45.9356913Z", "Clienttate": "SecretCliverValue", "DateSupportedtlSversion": "v1_2"} abonnements: graphique.microsoft. com / v1.0 / abonnements


http_header = {'autorisation': f'bear {token_response ["AccessTroken"]} ',' Type de contenu ':' Application / Json '} post_data = {"Changetype": "Mise à jour", "NotificationURL": Redirect_uri_2, " Ressource ":" ME / Drive / Root "," ExpirationDateTime ":" 2020-07-22T18: 23: 45.9356913z "," CLIENTSTATTE ":" SecretCliverValue "," DateSupportedtlSversion ":" v1_2 "} res = demande.post ( ' graph.microsoft.com/v1.0/... < / a>)


Mon demande.post () renvoie 400 code d'erreur. Je ne suis pas capable de le comprendre si mon abonnement configuré est correct. Existe-t-il une obligation de licence pour les abonnements API d'activer pour OneDrive. Merci de me guider sur les spécificités de la licence, de la portée et de la nagrow Redirect URL est bonne pour l'abonnement WebHook.


Si vous avez une nouvelle question, veuillez le demander en cliquant sur le bouton Poser une question . Inclure un lien vers cette question si cela aide à fournir un contexte. - de l'avis


@ Baywet- Nous suivons ce que vous avez demandé. Code donné ci-dessous @ app.Route ("/ notifier", méthodes = ['get', 'post']) def onedrive (): Imprimer ("Commencé Onedrive") ValToken = Flack.request.args.get ('ValidationToken ) ## VALT = URLLIB.PARSE.QUOTE_PLUS (ValToken) Imprimer (ValToken, 200, {'Type de contenu': 'Texte / Uni'}) Retournez ValToken, 200, {'Type de contenu': 'Plain / Texte' } Jeton recevant comme suit: "Poste / Notify? ValidationToken = validation% 3A + Essais + CLIENT + Applica + accessibilité + FO R + Abonnement + REQRE ST-ID% 3A + 3CA9C029-62 69-1312-5961- 08DA5CA 4F8A3 HTTP / 1.1 "200 error restent les mêmes



0
votes
valtoken=request.args.get('validationToken')
resp=app.response_class(valtoken,status=200,content_type="text/plain")
return resp

0 commentaires