2017-01-12 2 views
0

Dies ist der Ruby-Code ich ein Abonnement in Microsoft Graph erstellen bin mit:Microsoft Graph Webhook: Abonnement-Überprüfungsanforderung abgelaufen

 subscribe_endpoint = URI("https://graph.microsoft.com/v1.0/subscriptions") 
     http = Net::HTTP.new(subscribe_endpoint.host, subscribe_endpoint.port) 
     http.use_ssl = true 
     tomorrow = Date.today + 1 

     subscribe_request = "{ 
      \"changeType\": \"created,updated\", 
      \"notificationUrl\": \"https://my_url/api/v1/outlook/o365notification\", 
      \"resource\": \"https://stackoverflow.com/users/#{params[:o365account_id]}/events?$filter=Extensions/any(f:f/id eq 'Microsoft.OutlookServices.OpenTypeExtension.meeteor_event')\", 
      \"expirationDateTime\": #{(Time.now + 1.day).to_json}, 
      \"clientState\": \"SecretClientState\" 
     }" 

     subscribe_response = http.post(
      "/v1.0/subscriptions", 
      subscribe_request, 
      'Authorization' => "Bearer #{params[:o365account_access_token]}", 
      'Content-Type' => 'application/json' 
     ) 

es funktionierte großartig, aber plötzlich heute erhalte ich eine Antwort Subscription validation request timed out . Auch wenn ich einen POST an https://my_url/api/v1/outlook/o365notification mache, funktioniert es gerade gut.

Irgendwelche Ideen, warum es aufhörte zu arbeiten, wenn sich nichts auf meiner Seite änderte?

Könnte es sein, dass Punkte auf meiner Entwicklungsumgebung und ist oft offline, wurde die Domain verboten?

Antwort

1

Es gibt wahrscheinlich einige Änderungen auf Ihrem Benachrichtigungsserver, entweder Dienst oder Netzwerkkonfiguration. Es antwortet nicht auf Validierungsanfragen. Ich habe auch versucht, POST-Anfrage mit HTTP anstelle von HTTPS zu Ihrem Server, es gab 200 aber ohne Validierungstoken in Response Body.

+0

Aber die POST auf die gleiche URL mit Fiddler funktioniert (auch außerhalb von meinem Netzwerk) funktioniert die ganze Zeit. Und wenn mein Endpunkt 200 ohne das Validierungs-Token zurückgibt, würde die Fehlerreaktion vom Subskriptionsendpunkt anders sein als die Zeitüberschreitungsnachricht, die ich erhalte. Es sieht so aus, als ob die POST-Anfrage nicht an der angegebenen URL ausgeführt wird. –

+0

Ich habe eine E-Mail an Ihr Google Mail-Konto gesendet. Lassen Sie uns offline nachgehen, um zu vermeiden, Ihre Serverdetails offenzulegen. –

+0

Wenn jemand interessiert ist: Nach unserem Offline-Follow-up stellte sich heraus, dass es sich um ein Verbindungsproblem handelte, nachdem mein Endpunkt auf einem Cloud-Dienst bereitgestellt wurde, funktionierte es. Für Endpunkte, die auf Dev-Maschinen zeigen, wird ngrok vorgeschlagen. –

Verwandte Themen