См., Когда вам нужно реализовать эти функции на своем веб-сайте, вам нужно будет понять API и т. Д., Чтобы использовать его в полной мере.
Переход через эту https://developers.google.com/google-apps/contacts/v3/?csw=1#audience
Давайте говорить только лишь о Google. Остальным поставщикам также можно управлять аналогичными шагами. Здесь вы используете django-allauth для этой задачи.
Основные этапы являются:
Получить приложение создается и настраивается с провайдером. для этого вам понадобится профиль разработчика в google (или facebook и т. д.). Вам нужно будет создать приложение в консоли разработчика Google, и вы найдете много учебника для этого в Интернете. Это было сделано вами, поскольку у вас есть регистрация с включенным google на вашем сайте. Это серверная сторона Oauth2.0
Теперь вам нужно определить область полномочий, в которой вы нуждаетесь. Вам может потребоваться доступ только для просмотра общедоступного профиля. которые могут включать имя, фамилию, адрес электронной почты, идентификатор, пол и т. д. Для вашего приложения вам нужны контакты пользователей, и для этого вам также придется включить его в область. Это делается только в settings.py.
'Google': { 'СФЕРА': [ 'Профиль', 'электронная почта', 'https://www.googleapis.com/auth/contacts '], 'AUTH_PARAMS': {' access_type': 'онлайн'}} }
сейчас здесь у вас есть доступ к контактам. Теперь вам нужно только извлечь контакты с согласия владельца данных (пользователя).
Для этого вы можете следовать первой ссылке в ответе. Что вам нужно сделать, так это отправить запрос на получение некоторого URL-адреса ('https://www.google.com/m8/feeds/contacts/default/full' + '? Access_token =' + access_token). Запрос отправляется только провайдеру (google) с маркером авторизации, предоставленным вами для этого конкретного пользователя. Это вы найдете в таблице db socialtoken. После отправки соответствующего запроса ответ, который вы получите, - это контакты пользователя в формате xml.
Как только вы его получите, вы можете легко проанализировать его, чтобы извлечь необходимую информацию.
Все просто, если вы понимаете поток. django-allauth только поможет вам до регистрации & signin, где вы можете получить разные разрешения, определив область действия.
Для извлечения контактов вы можете написать свой собственный код.
Простой пример:
def get_email_google(request):
# social = request.user.social_auth.get(provider='google-oauth2')
user =request.user
# Code dependent upon django-allauth. Will change if we shift to another module
# if request.user.userprofile.get_provider() != "google":
a = SocialAccount.objects.get(user=user)
b = SocialToken.objects.get(account=a)
# access = b.token
access_token = b.token
url = 'https://www.google.com/m8/feeds/contacts/default/full' + '?access_token=' + access_token + '&max-results=100'
req = urllib2.Request(url, headers={'User-Agent' : "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.30 (KHTML, like Gecko) Ubuntu/11.04 Chromium/12.0.742.112 Chrome/12.0.742.112 Safari/534.30"})
contacts = urllib2.urlopen(req).read()
contacts_xml = etree.fromstring(contacts)
# print
# return render(request, 'search/random_text_print.html', locals())
result = []
for entry in contacts_xml.findall('{http://www.w3.org/2005/Atom}entry'):
for address in entry.findall('{http://schemas.google.com/g/2005}email'):
email = address.attrib.get('address')
result.append(email)
return render(request, 'search/random_text_print.html', locals())