Всем привет!

Вчера мне понадобилось скачать все фотографии из диалога с одним человеком в vk.com. Фотографий было больше 1000 штук. Понятное дело, что ручками это все делать было бы утомительно и… Стыдно. Не для того программированием занимаюсь, чтобы такую грязную работу делать не автоматизированно. Поэтому было решено написать скрипт.

В качестве языка был выбран Python. Его удобно использовать для консоли, он довольно быстрый, есть модуль urllib, позволяющий «одним движением» скачивать картинки по ссылке. Но главная причина - это то, что я начал изучать его недавно. Решил дополнительно попрактиковаться.

Сам скрипт получился небольшой, но было бы интересно описать процесс создания. Буду стараться писать побольше комментариев в коде, чтобы те, кто не знает python, тоже смогли понять процесс. А от знатоков очень приветствуются советы и указания. Итак, приступим.

«Вконтакте» не предоставляет API конкретно для скачивания материалов из беседы, поэтому самое долгое время заняло изучение того, как устроена система подгрузки картинок из диалога в vk.com. Все картинки лежат у них, понятное дело, на сервере, и доступ к ним имеет любой, у кого есть ссылка на эту картинку. Таким образом, чтобы скачать все фотографии из диалога, нам надо получить все ссылки на картинки. Тыкаясь туда-сюда, было выяснено, что при нажатии на «Действия -> показать материалы из беседы» отправляется POST запрос на vk.com/wkview.php . Запрос содержит параметры:

  • act:show
  • loc:im
  • w:history_photo
В этом запросе dialog_id - это значение параметра «sel» в адресной строке, когда мы заходим в диалог.
Выполнив такой запрос, мы получим в ответ что-то вроде вот этого:

16515wkview.js,wkview.css,page.js,page.css,page_help.css065900 Фотографии в переписке с ЮЗЕР_НЭЙМ Фотографии Видеозаписи Аудиозаписи Документы ... (и еще много ссылок с картинками) Список пуст. Показать еще {"count":"23318","offset":3330,"type":"history","commonClass":"wk_history_content wk_history_photo_content","wkRaw":"history_photo","canEdit":false,"lang":}WkView.historyInit();
Здесь я заменил ссылки на , так как уже говорил, что картинки vk лежат в открытом доступе и получить их может любой, кто знает ссылку.

Из всего этого нам интересны только ссылки, которые находятся внутри , а так же json на конце. Я был не до конца честен, говоря, что POST запрос принимает 4 параметра. Точнее, он принимает, но если его выполнить нам выдадутся только первые несколько фотографий. Так как vk.com имеет подгрузку контента по мере прокручивания страницы, то существует параметр offset, который отвечает за то, какую часть из всего множества фотографий нам подгрузить. В итоге параметры запроса выглядят вот так:

  • act:show
  • loc:im
  • w:history_photo
  • offset: offset
  • part: 1
Из всех параметров меняться будет меняться только offset. Его мы вытаскивает из того самого json"a на конце ответа. Каждый раз при выполнении запроса offset внутри json"а будет увеличиваться, показывая, какое «смещение» надо сделать в следующий раз. Таким образом, нам надо будет делать запросы до тех пор, пока у нас offset будет меньше count.

Кстати, а что насчет выполнения запросов? Как нам получить доступ к своей странице? Было выяснено, что доступ к странице может получить тот, у кого есть cookie под названием remixsid. Таким образом нам надо подставить эту куку в функцию, которая выполняет запрос и все получится. Безопасно? Не совсем, швыряться куками - это не есть хорошо, но я не нашел другого варианта. Если кто-то знает, напишите пожалуйста.

Общий алгоритм вроде понятен: сделать запрос, вытащить ссылки, записать их в файл, проверить-
новый offset>count?-, если нет, то присвоить offset новое значение и выполнить запрос с ним, если да, то выйти из цикла. Затем пройтись по всем ссылкам в файле и скачать картинки лежащие по их адресу. Начинаем писать код.

# coding=utf-8 import requests # для выполнения запросов import re # для парсинга по регулярным выражениям import sys # для обработки аргументов командной строки import os # для создания папок с фотографиями import urllib # для скачивания картинок import json # для обработки json # argv = remixsid_cookie # argv = dialog_id # argv = person_name
Аргументы у нас будут передаваться через терминал (remixsid, dialog_id и название папки):

Remixsid_cookie = sys.argv # Словарь запроса RequestData = { "act": "show", "al": 1, "loc":"im", "w": "history" + sys.argv + "_photo", "offset" : 0, "part" : 1 } request_href = "http://vk.com/wkview.php" # Установим первоначальные offset и count. Count изменится при первом запросе bound = {"count" : 10000, "offset" : 0}
Создадим отдельную папку для фотографий:

Try: os.mkdir("drop_" + sys.argv) # Пытаемся создать папку except OSError: print "Проблемы с созданием папки "drop_" + sys.argv + """ if(os.path.exists("drop_" + sys.argv)): os.chdir("drop_" + sys.argv) # Переходим в эту папку else: print "Не удалось создать папку\n" exit()
Отлично, начинаем выполнение запросов:

Test = open("links", "w") while(bound["offset"] < bound["count"]): RequestData["offset"] = bound["offset"] content = requests.post(request_href, cookies={"remixsid": remixsid_cookie}, params=RequestData).text # Этой командой мы выполняем post запрос с параметрами params и передавая куки. .text возвращает ответ запроса в виде текста. Все просто.
Теперь начинаем парсинг ответа. Извлекаем все через регулярные выражения. Сначала извлекаем json и устанавливаем следующий offset:

#ищем первое совпадение по регулярному выражению json_data_offset = re.compile("\{"count":.+?,"offset":.+?\}").search(content) # .search возвращает специальный объект. У него есть метод span(), который возвращает кортеж с индексами начала и конца найденной подстроки bound = json.loads(content) # декодируем json bound["count"] = int(bound["count"]) #count отдается в виде строки bound["offset"] = int(bound["offset"]) # на случай, если в будущем тоже будет отдаваться в виде строки. В принципе это написано ради "на всякий случай"
Теперь надо извлечь все ссылки из тегов src. Действуем тем же способом, но используем метод findall, который возвращает массив всех строк, которые совпали с регуляркой:

Links = re.compile("src="http://.+?"").findall(content)
Теперь запишем все в файл:

For st in links: test.write(st + "\n") # пишем то, что внутри src="..." test.close()
С этим все. Осталось только пройтись по файлу и скачать все по ссылкам. Это делается с помощью модуля urllib, вот так:

Test = open("links", "r") file_num = 0 for href in test: # берем строку из файла которая является ссылкой, и так до конца файла urllib.urlretrieve(href, str(file_num)) # в качестве имени файла просто используем его порядковый номер file_num += 1 print "Скачано " + str(file_num) + " файлов\n" test.close()
Готово! Но, так как использовать это мы будем из командной строки, давайте еще напишем небольшую документацию (--help), а так же вывод об ошибке, если аргументов командной строки меньше, чем нужно. Добавим в начало:

If(sys.argv == "--help"): print """ Usage: python main.py is a string parameter "sel" in address line which you see when open a dialog """ exit() else: if(len(sys.argv) < 4): print """ Invalid number of arguments. Use parameter --help to know more """ exit()
Вот и все, вроде. Конечно, можно еще многое добавить: проверку на выполнен запрос или нет, проверку на корректность входящих данных, автоматическое вытаскивание (например, первых 10), но мне просто хотелось описать основные моменты. В итоге те самые 1000 фотографий, которые мне были нужны, были скачаны. Заняло это где-то 2 минуты. Никаких ограничений на запросы, как так понял, vk.com не ставит, хотя могу предположить, что на такой маленький для него трафик он даже не реагирует.

Весь рабочий код целиком лежит на

Всем привет!

Вчера мне понадобилось скачать все фотографии из диалога с одним человеком в vk.com. Фотографий было больше 1000 штук. Понятное дело, что ручками это все делать было бы утомительно и… Стыдно. Не для того программированием занимаюсь, чтобы такую грязную работу делать не автоматизированно. Поэтому было решено написать скрипт.

В качестве языка был выбран Python. Его удобно использовать для консоли, он довольно быстрый, есть модуль urllib, позволяющий «одним движением» скачивать картинки по ссылке. Но главная причина - это то, что я начал изучать его недавно. Решил дополнительно попрактиковаться.

Сам скрипт получился небольшой, но было бы интересно описать процесс создания. Буду стараться писать побольше комментариев в коде, чтобы те, кто не знает python, тоже смогли понять процесс. А от знатоков очень приветствуются советы и указания. Итак, приступим.

«Вконтакте» не предоставляет API конкретно для скачивания материалов из беседы, поэтому самое долгое время заняло изучение того, как устроена система подгрузки картинок из диалога в vk.com. Все картинки лежат у них, понятное дело, на сервере, и доступ к ним имеет любой, у кого есть ссылка на эту картинку. Таким образом, чтобы скачать все фотографии из диалога, нам надо получить все ссылки на картинки. Тыкаясь туда-сюда, было выяснено, что при нажатии на «Действия -> показать материалы из беседы» отправляется POST запрос на vk.com/wkview.php . Запрос содержит параметры:

  • act:show
  • loc:im
  • w:history_photo
В этом запросе dialog_id - это значение параметра «sel» в адресной строке, когда мы заходим в диалог.
Выполнив такой запрос, мы получим в ответ что-то вроде вот этого:

16515wkview.js,wkview.css,page.js,page.css,page_help.css065900 Фотографии в переписке с ЮЗЕР_НЭЙМ Фотографии Видеозаписи Аудиозаписи Документы ... (и еще много ссылок с картинками) Список пуст. Показать еще {"count":"23318","offset":3330,"type":"history","commonClass":"wk_history_content wk_history_photo_content","wkRaw":"history_photo","canEdit":false,"lang":}WkView.historyInit();
Здесь я заменил ссылки на , так как уже говорил, что картинки vk лежат в открытом доступе и получить их может любой, кто знает ссылку.

Из всего этого нам интересны только ссылки, которые находятся внутри , а так же json на конце. Я был не до конца честен, говоря, что POST запрос принимает 4 параметра. Точнее, он принимает, но если его выполнить нам выдадутся только первые несколько фотографий. Так как vk.com имеет подгрузку контента по мере прокручивания страницы, то существует параметр offset, который отвечает за то, какую часть из всего множества фотографий нам подгрузить. В итоге параметры запроса выглядят вот так:

  • act:show
  • loc:im
  • w:history_photo
  • offset: offset
  • part: 1
Из всех параметров меняться будет меняться только offset. Его мы вытаскивает из того самого json"a на конце ответа. Каждый раз при выполнении запроса offset внутри json"а будет увеличиваться, показывая, какое «смещение» надо сделать в следующий раз. Таким образом, нам надо будет делать запросы до тех пор, пока у нас offset будет меньше count.

Кстати, а что насчет выполнения запросов? Как нам получить доступ к своей странице? Было выяснено, что доступ к странице может получить тот, у кого есть cookie под названием remixsid. Таким образом нам надо подставить эту куку в функцию, которая выполняет запрос и все получится. Безопасно? Не совсем, швыряться куками - это не есть хорошо, но я не нашел другого варианта. Если кто-то знает, напишите пожалуйста.

Общий алгоритм вроде понятен: сделать запрос, вытащить ссылки, записать их в файл, проверить-
новый offset>count?-, если нет, то присвоить offset новое значение и выполнить запрос с ним, если да, то выйти из цикла. Затем пройтись по всем ссылкам в файле и скачать картинки лежащие по их адресу. Начинаем писать код.

# coding=utf-8 import requests # для выполнения запросов import re # для парсинга по регулярным выражениям import sys # для обработки аргументов командной строки import os # для создания папок с фотографиями import urllib # для скачивания картинок import json # для обработки json # argv = remixsid_cookie # argv = dialog_id # argv = person_name
Аргументы у нас будут передаваться через терминал (remixsid, dialog_id и название папки):

Remixsid_cookie = sys.argv # Словарь запроса RequestData = { "act": "show", "al": 1, "loc":"im", "w": "history" + sys.argv + "_photo", "offset" : 0, "part" : 1 } request_href = "http://vk.com/wkview.php" # Установим первоначальные offset и count. Count изменится при первом запросе bound = {"count" : 10000, "offset" : 0}
Создадим отдельную папку для фотографий:

Try: os.mkdir("drop_" + sys.argv) # Пытаемся создать папку except OSError: print "Проблемы с созданием папки "drop_" + sys.argv + """ if(os.path.exists("drop_" + sys.argv)): os.chdir("drop_" + sys.argv) # Переходим в эту папку else: print "Не удалось создать папку\n" exit()
Отлично, начинаем выполнение запросов:

Test = open("links", "w") while(bound["offset"] < bound["count"]): RequestData["offset"] = bound["offset"] content = requests.post(request_href, cookies={"remixsid": remixsid_cookie}, params=RequestData).text # Этой командой мы выполняем post запрос с параметрами params и передавая куки. .text возвращает ответ запроса в виде текста. Все просто.
Теперь начинаем парсинг ответа. Извлекаем все через регулярные выражения. Сначала извлекаем json и устанавливаем следующий offset:

#ищем первое совпадение по регулярному выражению json_data_offset = re.compile("\{"count":.+?,"offset":.+?\}").search(content) # .search возвращает специальный объект. У него есть метод span(), который возвращает кортеж с индексами начала и конца найденной подстроки bound = json.loads(content) # декодируем json bound["count"] = int(bound["count"]) #count отдается в виде строки bound["offset"] = int(bound["offset"]) # на случай, если в будущем тоже будет отдаваться в виде строки. В принципе это написано ради "на всякий случай"
Теперь надо извлечь все ссылки из тегов src. Действуем тем же способом, но используем метод findall, который возвращает массив всех строк, которые совпали с регуляркой:

Links = re.compile("src="http://.+?"").findall(content)
Теперь запишем все в файл:

For st in links: test.write(st + "\n") # пишем то, что внутри src="..." test.close()
С этим все. Осталось только пройтись по файлу и скачать все по ссылкам. Это делается с помощью модуля urllib, вот так:

Test = open("links", "r") file_num = 0 for href in test: # берем строку из файла которая является ссылкой, и так до конца файла urllib.urlretrieve(href, str(file_num)) # в качестве имени файла просто используем его порядковый номер file_num += 1 print "Скачано " + str(file_num) + " файлов\n" test.close()
Готово! Но, так как использовать это мы будем из командной строки, давайте еще напишем небольшую документацию (--help), а так же вывод об ошибке, если аргументов командной строки меньше, чем нужно. Добавим в начало:

If(sys.argv == "--help"): print """ Usage: python main.py is a string parameter "sel" in address line which you see when open a dialog """ exit() else: if(len(sys.argv) < 4): print """ Invalid number of arguments. Use parameter --help to know more """ exit()
Вот и все, вроде. Конечно, можно еще многое добавить: проверку на выполнен запрос или нет, проверку на корректность входящих данных, автоматическое вытаскивание (например, первых 10), но мне просто хотелось описать основные моменты. В итоге те самые 1000 фотографий, которые мне были нужны, были скачаны. Заняло это где-то 2 минуты. Никаких ограничений на запросы, как так понял, vk.com не ставит, хотя могу предположить, что на такой маленький для него трафик он даже не реагирует.

Весь рабочий код целиком лежит на

Для начала понадобится OpenOffice Calc, Excel или любые электронные таблицы. Открываем в браузере ваш диалог Вконтакте. Пролистываем его весь до начала. Нажимаем комбинацию клавиш Ctrl+A (выделить всё), а потом Сtrl+C (скопировать всё). Этот момент как раз виден на скриншоте выше. Не пугайтесь, что копируем всю страницу - мусор уберём легко.

Внимание! Если диалог достаточно большой, то вставлять лучше сначала в Блокнот. Потом копируем содержимое Блокнота в электронную таблицу. Если копировать большой диалог сразу в Excel, то тот зависнет очень надолго, если не на совсем.

Запускаем OpenOffice Calc или Excel. Вставляем скопированный диалог с мусором в электронную таблицу. Ниже виден этот процесс.

Теперь начинаем чистить таблицу. Удаляем вехние строки, переносим столбец с датой влево, а столбец с именами сдвигаем влево до того момента, пока вас не устроит расположение имён над текстом сообщений. После этого у меня оказался пустой столбец «С», который я удалил. Тут всё можете делать на свой вкус, как вам будет удобно читать.

Вот что получилось у меня.

Уже неплохо. Ничего лишнего. Теперь можно сохранить в любом формате.

Почему делать лучше в таблице, а не в Word или OpenOffice Writer? Потому, что форматирование в таблице не ползёт. Если вы сохраните (через копирование и вставку в блокнот) потом этот диалог как простой текстовый файл, то форматирование останется в виде удобного для чтения диалога.

Вот, что получилось на выходе.

Таким образом можно не только сохранять переписку Вконтакте, но и записи из других сайтов и сервисов.

Удачи, а я пошёл писать пост про самый экономный шоппинг.

Сохраните на память, делитесь с друзьями и оставляйте комментарии.

(4 оценок, среднее: 5,00 из 5) Загрузка...

Http://lassimarket.ru/2014/08/kak-soxranit-dialog-vkontakte/http://lassimarket.ru/wp-content/uploads/2014/08/kak-sohranit-dialog-vkontakte2.jpghttp://lassimarket.ru/wp-content/uploads/2014/08/kak-sohranit-dialog-vkontakte2.jpg2017-05-14T23:46:04+00:00Антон ТретьякИнтернетДорогие друзья! Сегодняшний пост хочу посвятить такой теме, как сохранение переписки из социальной сети Вконтакте. Понадобилось мне тут несколько диалогов сохранить, а встроенного сервиса у Контакта нет. Есть приложения типа VkOpt для сохранения историй переписки, но мы попробуем иначе, без использования сторонних приложений и сервисов, которым нужно ещё пароль от...Антон ТретьякАнтон Третьяк - обзоры, инструкции, лайфхаки

lassimarket.ru

Как Вконтакте сохранить историю сообщений: инструкция

Необходимость сохранить историю общения с некоторыми людьми у пользователей Вконтакте возникает часто. Но не все находят способы, как это сделать. Просто скопировав все сообщения с пользователем, получается каша, после этого информацию нужно обрабатывать и редактировать. Как обойтись без этих процедур? Можно ли сохранить диалог другим способом?

Способы скопировать переписку

Если ваш диалог с пользователем состоит из десятка сообщений, которые вы хотите сохранить к себе на ПК, то заморачиваться не стоит. Выделите все при помощи мыши, нажмите сочетание клавиш Ctrl+C. Затем откройте блокнот или документ Word и нажмите Ctrl+V. Текст появится в документе.

Также вместо Word можно использовать OpenOffice Calc или Excel. Дело в том, что после копирования и вставки сохранится не только диалог с пользователем, но и ненужная информация. Избавиться от мусора проще в таблице, нежели в текстовом документе. Но форматирование для чтения диалога более удобное именно в текстовом файле типа блокнота.

Но если нужно скачать историю сообщений со всеми пользователями, то копированием вручную тут не справиться. На помощь придет приложение VkOpt.

Это приложение разработано для того, чтобы пользователи Вконтакте имели доступ к расширенным функциям.

Благодаря этому приложению можно управлять своими сообщениями. В программе существуют два списка сообщений:

Эти функции можно отключать или включать.

Кроме этих функций есть возможность посмотреть историю и скачать ее. Кнопка сохранения находится в самой истории переписки.

socya.ru

скопировать переписку из контакта ?

есть километры переписки в контакте. как скопировать историю сообщений на комп? "копировать-вставить" не вариант, потому что когда выделяю текст, страница не прокручивается вниз, а копировать фрагментами можно часами. пока нагуглился способ сохранить страницу, но в виде текста получается страница сплошняком, без разбивки на диалоги, а при сохранении страницы в полном виде диалогов нет вообще, пустая страница. принтскрин неудобен. мне кажется, я упускаю что-то очевидное.

useful-faq.livejournal.com

Как сохранить диалог Вконтакте

Любая переписка В Контакте может быть перенесена в удобный для чтения формат и отправлена другому пользователю. Как видите, в этом нет ничего сложного.

Также отметим, что, если переписка небольшая и умещается на одном экране без пролистывания – вы можете просто сделать принтскрин и отправить диалог картинкой, что очень удобно. Как делать принтскрин мы подробно рассказывали в других статьях.

vkhow.ru

Как сохранить важную переписку ВКонтакте (инструкция)

Переписываясь с друзьями и коллегами во ВКонтакте у многих возникает необходимость сохранить какие-то данные переписки (текстовые либо фото), что называется «на виду», дабы не искать их потом среди тысяч строк.

К счастью, такая возможность имеется!

Необходимо лишь выделить нужное сообщение, нажать на кнопку «Переслать» и отправить прикрепленную информацию самому себе!

Нужно лишь в строке поиска собеседников указать собственное имя и кликнуть по нему мышкой, а на следующем шаге осуществить отправку.

Благодаря данному трюку важная информация всегда окажется на виду! Найти ее можно будет зайдя в «Сообщения» и выбрав в диалогах самого себя.Пользуйтесь!

Вконтакте

Одноклассники

2014-11-24 2017-02-21 | DjDiplomat | нет комментариев | вк

Известно, что сотрудники компании Google, которых на гугловском производственном сленге называют «нуглерами», могут абсолютно бесплатно пользоваться всеми благами офисного пространства, в котором они пребывают: купаться в душе, бегать в столовую за завтраками, обедами и ужинами, загружать по полной стиральную и посудомоечную машины, смотреть ТВ и т.д. То есть могут запросто жить на работе, не испытывая дискомфорта и тоски по дому.

Ну а мы, уважаемый читатель, выполняя вход в аккаунт громаднейшей интернет-системы Google, уже наслаждаемся благами, которые сотворили для нас и на радость нам эти самые «нуглеры», вольготно днюя и ночуя в производственной обители.

Из этой статьи вы узнаете, как войти в Гугл аккаунт, какие настройки есть в личном кабинете сервиса Google и как пользоваться несколькими учётными записями Гугл на одном компьютере.

Авторизация

Чтобы войти в профиль Гугл, необходимо выполнить следующие действия:

1. Откройте страницу для входа.

Если вы пользуетесь браузером Google Chrome:

  • на новой вкладке, вверху справа, щёлкните значок «группа квадратов», расположенный рядом с надписью «Картинки»;
  • в выпавшем плиточном меню выберите «Мой аккаунт».

В других браузерах: необходимо набрать в адресной строке - myaccount.google.com. А затем нажать «Enter».

2. В верхнем правом углу страницы кликните кнопку «Войти».

3. Чтобы выполнить вход, наберите в появившейся панели логин (адрес почтового ящика в формате @gmail.com). Кликните «Далее».

4. Наберите пароль от профиля Гугл. Щёлкните кнопку «Войти».

Внимание! Во избежание ошибки набора убедитесь в том, что на клавиатуре включена английская раскладка и отключен регистр «Caps Lock».

Если вы не можете зайти в свою учётную запись (постоянно появляется ошибка ввода данных), . Она поможет вам решить данную проблему.

Примечание. Таким же образом вы можете пройти авторизацию не только на странице настроек аккаунта, но и во всех дополнительных сервисах Гугла (Youtube, Google Play, Диск и др.).

Настройки профиля

Рассмотрим выполнение часто встречающихся пользовательских задач в каждом из представленных разделов.

Безопасность и вход

В этой группе опций выполняется настройка доступа к учётной записи, управление паролями, а также подключаются дополнительные средства защиты от взлома.

В подразделе «Вход в аккаунт Google», в блоке «Пароль и способ входа», выполняется смена символьного ключа для входа, активируется и настраивается двухэтапная аутентификация (вход через пароль и верификация через email или телефон).

В настройках «Параметры восстановления… » указываются/изменяются резервный (дополнительный) ящик электронной почты и номер мобильного. Они необходимы для организации дополнительного уровня защиты и подтверждения прав на учётную запись.

В нижней части страницы этого раздела размещена статистика посещения аккаунта (когда, откуда и с какого устройства выполнялся вход). При помощи неё оперативно отслеживается стороннее вмешательство.

В подменю «Настройки предупреждений… » включается/отключается служба оповещений на почтовый ящик и телефон в случае возникновения критических угроз безопасности.

Данный раздел отвечает за редактирование личных данных профиля и настройку доступа к ним.

Чтобы перейти на страницу своей пользовательской анкеты, щёлкните подменю данного блока - пункт «Личная информация».

Этот раздел предназначен для организации работы с сервисами Гугле.

В подразделе «Отключение сервисов… » осуществляется выборочное удаление веб-служб системы и полная деактивация аккаунта.

В «Объём Google Диска» предоставляется возможность расширить пространство удалённого хранилища данных посредством покупки дополнительных гигабайт.

Использование нескольких профилей на одном ПК

Для управления несколькими профилями Google выполните следующее:

1. Выйдете из аккаунта, в котором находитесь в данный момент:

  • кликните левой кнопкой аватарку (вверху справа);
  • в выпавшем подменю нажмите «Выйти».

2. На новой страничке, под строкой для набора пароля, клацните ссылку «Войти в другой аккаунт».

Чтобы переключаться с одного профиля на другой, после выхода из аккаунта снова зайдите в этот раздел (Войти в другой…). И выберите в списке необходимый логин.

Если вы захотите убрать сохранённый логин из списка, кликните в этой же панели опцию «Удалить».

А затем нажмите значок «крестик» напротив профиля, от которого нужно избавиться и нажмите «Готово».

Плодотворной вам работы и приятного отдыха в сервисах Google!

Знали ли Вы, что используя Google , можно сделать на своем сайте регистрацию на сайте в один клик? Каждый, у кого есть аккаунт в Google, может просто нажать на кнопку, а скрипт автоматически загрузит в приложение e-mail, имя и фотографию.
Используя этот вариант входа/регистрации, вы создадите удобство для пользователей. Вот некоторые из преимуществ:

Не нужно делать проверку формы входа, и вообще создавать форму;

Нет необходимости в функции «Забыл пароль»;

E-Mail адресы уже подтверждены Google, поэтому вам не нужно высылать подтверждение.

Конечно, это будет работать, только если у человека есть аккаунт Google, поэтому имеет смысл сделать что-то в дополнение к этой системе регистрации.

Настройка приложения

Первый шаг заключается в создании приложения через консоль Google API . Следуйте инструкциям для получения дополнительной информации. После завершения процесса, разместить полученные ключи в setup.php.
Запуск кода из schema.sql (вы можете найти его в архиве скачать) в PhpMyAdmin или ином административном MySQL инструменте. Это создаст glogin_users таблицу в базе данных, которая будет использоваться для хранения информации об учетных записях пользователей вашего приложения. После этого, напишите свои данные подключения к базе данных в setup.php .

PHP

Для чтения и вставки в базу данных используется библиотека Idiorm . Будем создавать следующие PHP страницы:

index.php – главный файл приложения;

setup.php – соединение с базой данных и ключи выданные Google;

Папки библиотеки Idiorm, PHP библиотеки Google.

Давайте взглянем на код первой части index.php :

200?"200px":""+(this.scrollHeight+5)+"px");">require "setup.php";

// Create a new Google API client
$client = new apiClient();
//$client->setApplicationName("Tutorialzine");

// Configure it
$client->setClientId($client_id);
$client->setClientSecret($client_secret);
$client->setDeveloperKey($api_key);
$client->setRedirectUri($redirect_url);
$client->setApprovalPrompt(false);
$oauth2 = new apiOauth2Service($client);

// The code parameter signifies that this is
// a redirect from google, bearing a temporary code
if (isset($_GET["code"])) {

// This method will obtain the actuall access token from Google,
// so we can request user info
$client->authenticate();

// Get the user data
$info = $oauth2->userinfo->get();

// Find this person in the database
$person = ORM::for_table("glogin_users")->where("email", $info["email"])->find_one();

If(!$person){
// No such person was found. Register!

$person = ORM::for_table("glogin_users")->create();

// Set the properties that are to be inserted in the db
$person->email = $info["email"];
$person->name = $info["name"];

If(isset($info["picture"])){
// If the user has set a public google account photo
$person->photo = $info["picture"];
}
else{
// otherwise use the default
$person->photo = "assets/img/default_avatar.jpg";
}

// insert the record to the database
$person->save();
}

// Save the user id to the session
$_SESSION["user_id"] = $person->id();

// Redirect to the base demo URL
header("Location: $redirect_url");
exit;
}

// Handle logout
if (isset($_GET["logout"])) {
unset($_SESSION["user_id"]);
}

$person = null;
if(isset($_SESSION["user_id"])){
// Fetch the person from the database
$person = ORM::for_table("glogin_users")->find_one($_SESSION["user_id"]);
}



HTML

Код HTML занимает нижнюю половину страницы index.php . После авторизации через Google сюда мы сможем выводить данные о пользователе. Сама страница является стандартным документом HTML5.


200?"200px":""+(this.scrollHeight+5)+"px");">



Google Powered Login Form | Tutorialzine Demo






Login Form