Ошибка Microsoft Graph V1 API: OData :: ServerError 503 ConcurrentItemSave: «При сохранении данных в хранилище возникли конфликты - PullRequest
0 голосов
/ 26 сентября 2018

У меня проблемы с отладкой. Эта проблема возникает при отправке новых событий в Календарь Outlook с помощью Microsoft Graph API (v1).Я проверил, и это все еще работает, но я получил эту ошибку, которая произошла сегодня несколько раз из моих приложений Ruby on Rails с гемами, упомянутыми в фрагменте кода ниже.И после этих ошибок в календарь добавляются повторяющиеся события.Я искал эту проблему, но все еще ничего не получил.Может ли кто-нибудь помочь мне отладить эту проблему, пожалуйста?Я просто не знаю, была ли эта проблема вызвана действиями моих пользователей или просто ошибкой сервера API.Большое спасибо!

OData :: ServerError 503 ConcurrentItemSave: «При сохранении данных для сохранения возникли конфликты (saveresult: IrresolvableConflict, properties:). Пожалуйста, повторите запрос».from "https://graph.microsoft.com/v1.0/me/calendars/AAMkADg1YmMzNjE2LTM5Y2MtNGI2NC05NjJjLWRiY2RhZTZkNDRkMABGAAAAAADZc5aq6QclSqy_4oRMVv_EBwB4ZnW6S6xLTZDSXIsgJfprAAAAAAEGAAB4ZnW6S6xLTZDSXIsgJfprAAAGEcjmAAA=/events"

Код, который я использую для создания событий через API

require 'adal'
require 'microsoft_graph'

username      = ENV["OUTLOOK_USERNAME"]
password      = ENV["OUTLOOK_PASSWORD"]
client_id     = ENV["OUTLOOK_CLIENT_ID"]
client_secret = ENV["OUTLOOK_CLIENT_SECRET"]
tenant        = ENV["OUTLOOK_TENANT"]
user_cred     = ADAL::UserCredential.new(username, password)
client_cred   = ADAL::ClientCredential.new(client_id, client_secret)
context       = ADAL::AuthenticationContext.new(ADAL::Authority::WORLD_WIDE_AUTHORITY, tenant)
resource      = "https://graph.microsoft.com/"
tokens        = context.acquire_token_for_user(resource, client_cred, user_cred)

callback = Proc.new { |r|
  r.headers["Authorization"] = "Bearer #{tokens.access_token}"
  r.headers["Prefer"] = 'outlook.timezone="Australia/Sydney"'
  r.headers['Content-type'] = 'application/json'
}

@graph = MicrosoftGraph.new(
  base_url: "https://graph.microsoft.com/v1.0",
  cached_metadata_file: File.join(MicrosoftGraph::CACHED_METADATA_DIRECTORY, "metadata_v1.0.xml"),
  &callback
)

#example_data
calendar_id = "my_calendar_id"
data = my_event_object

@graph.service.post("me/calendars/#{calendar_id}/events", data.to_json)
...