Ответы пользователя по тегу ВКонтакте
  • Как сделать обязательным email у oAuth провайдеров?

    @askarik
    веб-разработчик
    как раз недавно работал с этим
    решение есть, просто кода много будет если я его выложу здесь
    опишу всё так, если не понятно спросите, отвечу

    в общем facebook: да, здесь есть такая ерунда, что сама социалка позволяет убрать галочку пользователю, но есть АПИ метод, который может узнать, какие права дал нам этот пользователь а именно
    /me/permissions?access_token=
    если в ответе от АПИ, в массиве для email status == decline - то нет прав, если granted - то есть
    если нет, можно запросить доступ к email заново
    header("HTTP/1.1 302 Found");
    header(
    'Location: '.$cfg['urls']['authorize_endpoint'].
    'auth_type=rerequest&'.//этот парам. указывает что надо сделать перезапрос доступа к email пользователя (не получится отказать в доступе к email)
    'client_id='.$cfg['client_id'].'&'.
    'response_type='.$cfg['response_type'].'&'.
    'state='.$cfg['state'].'&'.
    'scope='.$cfg['scope'].'&'.
    'redirect_uri='.$cfg['urls']['redirect_uri']);


    тут то уже пользователь не сможет галочку снять, либо ОК либо ОТМЕНА

    что касается ВК:
    тоже всё легко, используй OAuth 2.0
    header("HTTP/1.1 302 Found");
    header(
    'Location: '.$cfg['urls']['authorize_endpoint'].
    'client_id='.$cfg['client_id'].'&'.
    'response_type='.$cfg['response_type'].'&'.
    'scope=email&'.//вот оно то место, где ты запрашиваешь email
    'v='.$cfg['v'].'&'.
    'redirect_uri='.$cfg['urls']['redirect_uri']);

    если используешь OAuth 2.0, там галочку для email снять нельзя
    Ответ написан
    5 комментариев