Обновление контактов с использованием Python, Django и Graph - PullRequest
1 голос
/ 22 октября 2019

Я пытаюсь обновить контакты с помощью Python и Microsoft Graph на странице профиля, которую я создал с помощью Django.

Я могу получить доступ к контактам и получить все необходимые мне данные, однако я не могу работатьКак обновить поля.

Единственная информация, которую я могу найти, находится на веб-сайте Graph, однако я не могу понять, как перевести это в пригодный для использования код:

PATCH PATCH https://graph.microsoft.com/beta/me/contacts/
Content-type: application/json

{
  "title": "Mr",
  "givenName": "Steve"
}

IПредположим, что есть способ просто соединить это как простую ссылку, но я не могу решить это. Я пробовал следующее:

PATCH https://graph.microsoft.com/beta/me/contacts/{id}/title/Mr

PATCH https://graph.microsoft.com/beta/me/contacts/{id}/title:Mr

PATCH https://graph.microsoft.com/beta/me/contacts/{id}/title/$value==Mr

, но все они выдают ошибки

На сайте Microsoft нет руководств по выполнению этого с Python, и найти какую-либо информацию о ней очень сложно. Это. Так что, надеюсь, кто-то может помочь.

Ура!

!!!!!!!!!!!!! ОБНОВЛЕНИЕ !!!!!!!!!!!!!!!!!!

Вот мой текущий код, который до сих пор, к сожалению, ничего не делает:

В моих views.py:

def profile(request):
  if request.session['has_id']==False:
    contact_id = request.session['contact_id'] = request.POST.get('edit')
    request.session['has_id'] = True
  else:
    contact_id = request.session['contact_id']
  context = ct.profile(request,id=request.session.get('contact_id'),init=initialize_context,get_tok=get_token)
  if request.method=="PATCH":
    ct.update(contact_id,'title',request.PATCH.get('title'))
  return render(request, 'tutorial/profile.html', context)

и мой апдейтер:

def update(id,key,value):
  url = '{}/me/contacts/{}'.format(graph_url,id)
  payload = {key : value}

  head = {
    "Content-type" : "application/json",
  }

  requests.patch(url=url,data=payload,headers=head)

Ответы [ 2 ]

0 голосов
/ 23 октября 2019

Наконец-то все получилось, я думал, что вчера попробовал что-то подобное, но, видимо, нет.

Вот как это сделать!

views.py

def profile(request):
  if request.session['has_id']==False:
    contact_id = request.session['contact_id'] = request.POST.get('edit')
    request.session['has_id'] = True
  else:
    contact_id = request.session['contact_id']
  context = ct.profile(request,id=request.session.get('contact_id'),init=initialize_context,get_tok=get_token)
  if request.method=="PATCH":
    ct.update(contact_id,'title',request.PATCH.get('title'))
  return render(request, 'tutorial/profile.html', context)

contacts_helper.py:

def update(token,id,key,value):
  graph_client = OAuth2Session(token=token)
  url = '{}/me/contacts/{}'.format(graph_url,id)
  payload = {key : value}

  graph_client.patch(url,data=json.dumps(payload),headers={'Content-type': 'application/json'})

Очевидно, что если вы смотрите на это, вы, вероятно, уже настроили auth_helper.py и graph_helper.py, но если нет, то вам следует обратиться в MicrosoftГрафик веб-сайта и следуйте этим инструкциям:

https://developer.microsoft.com/en-us/graph/get-started/python

0 голосов
/ 22 октября 2019

Как я вижу в вашем описании выше, вы должны помещать данные в тело, а не в URL. Я рекомендую вам сначала попробовать это с почтальоном, curl или ... Затем закодируйте, если это сработало! Для этого просто выберите application/json и затем поместите данные, которые вы хотите изменить, в тело.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...