Não consigo fazer a permissão de e-mail necessária.
Se um usuário soltar o email usando o login do FB, meu código é quebrado. E quando tento escrever código em torno deste problema (tente avisar o usuário para aceitar o requisito de permissão de e-mail). Ele não funcionará; o usuário teria que revogar o access da aplicação manualmente em suas configurações de FB, e isso está obviamente fora de questão.
Então, como posso fazer a permissão de e-mail necessária como parte do meu aplicativo / site?
Tbh, eu não consegui ler todos os documentos da API do Facebook sem me cobrir a cabeça.
Aqui está o que tenho atualmente:
var $user = null; function __construct() { //blahblahlblah //blahblahblah (Code needed for facebook login to work) $this->user = $this->facebook->getUser(); if ($this->user) { try { // Proceed knowing you have a logged in user $this->user = $this->facebook->api('/me'); $this->logoutUrl = $this->facebook->getLogoutUrl( array('next' => base_url() . 'connect/logout') ); } catch (FacebookApiException $e) { error_log($e); $this->user = null; } } } function process() { // If the Facebook user allows his/her email to be shared. // [If they don't, skip to the `else` statement below] if (isset($this->user['email'])) { //Great! I can process normally } // If the Facebook user doesn't share their email. else { //What do I do here? //I'm not sure how the OAuth works, so that's why im checking echo 'email is required. line 86 , connect.php controller'; } }
Você deve verificar o token de access recebido antes de continuar com a lógica do aplicativo. Como isso é descrito aqui:
https://developers.facebook.com/docs/facebook-login/permissions/v2.0#checking
Se você reconhecer que o Usuário não deu a permissão de email
– email
, você pode reenviar o diálogo de permissão como descrito aqui:
https://developers.facebook.com/docs/facebook-login/permissions/v2.0#handling
Citar:
Se alguém recusou uma permissão para o seu aplicativo, a checkbox de diálogo de login não permitirá que seu aplicativo re-solicite a permissão, a menos que você passe
auth_type=rerequest
juntamente com sua solicitação.
usando o Facebook php sdk
require_once 'facebook-sdk/facebook.php'; $config = array ( 'appId' => 'your id', 'secret' => 'your secret', 'fileUpload' => false, 'allowSignedRequest' => false ); $facebook = new Facebook ( $config ); $fb_user_id = $facebook->getUser (); $fb_params = array ( 'scope' => 'email, publish_stream' );
e gere URL de login para seus usuários
if (empty ( $fb_user_id )) { $fb_login_url = $facebook->getLoginUrl ( $fb_params ); }