2014-11-13 14 views
9

Ricevo un "browser non supportato: chrome per iOS non supporta questa funzionalità. Utilizza Safari e riprova" quando si tenta di aprire una finestra di dialogo condivisa utilizzando l'API FB.ui su un iphone.Qualsiasi soluzione alternativa per evitare "browser non supportato ..." durante il tentativo di utilizzare FB.ui su chrome su IOS

Immagino che questa domanda sia correlata allo Facebook OAuth "Unsupported" in Chrome on iOS, ma sono interessato alla condivisione e non all'autenticazione da solo (ovvero non mi interessa se un utente effettuerà il login e non lo saprò).

+0

Controllare [qui] [1] come ho risolto questo problema! [1]: http://stackoverflow.com/a/32394517/1435014 – apandey846

risposta

3

So che questa è una vecchia domanda, ma se qualcun altro affronta questo tipo di problema, (voglio dire un po 'di googling mi ha portato qui per una ragione).

La finestra di condivisione di Facebook non ha bisogno di un login per condividere.

https://developers.facebook.com/docs/sharing/reference/share-dialog

Di solito si utilizza il js sdk, in questo modo:

FB.ui({ 
    method: 'share', 
    href: 'https://developers.facebook.com/docs/', 
}, function(response){}); 

Unfortunally questo non funzionerà in Chrome su iOS, ma per fortuna c'è una soluzione per questo (Se si utilizza php);

$isIosChrome = (strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) ? true : false; 
if ($isIosChrome == true) { 
    $iosChromeShareLink = 'https://www.facebook.com/dialog/share 
     ?app_id='.$settings['facebook']['appId'].' 
     &display=popup 
     &href='.urlencode($THE_SITE_U_WANT_TO_SHARE).' 
     &redirect_uri='.urlencode($settings['facebook']['redirectUrl']); 
} 

Quindi, fondamentalmente, è necessario rilevare se l'utente utilizza Chrome su iOS e quindi sostituire il vostro elemento di attivazione per la funzione del FB.ui con la -LINK "FB sharer". Perché non vuoi usare il condivisore tutto il tempo, solo quando js sdk non funziona.

E poiché ogni sito su Internet è trattato come OG-oggetti da facebook, è sufficiente assicurarsi che il proprio sito contenga i tag OG corretti.

Ma se l'app (o il sito) di Facebook richiede l'accesso per altri scopi e si affronta il messaggio "browser non supportato" da chrome, è possibile accedere ai propri utenti tramite il login di reindirizzamento php (Questo richiede l'uso di php sdk) .

use Facebook\FacebookSession; 
use Facebook\FacebookRedirectLoginHelper; 
use Facebook\FacebookRequest; 
use Facebook\GraphUser; 
use Facebook\FacebookRequestException; 

/** 
*FIXES CHROME ON IOS BUG 
* 
* 
*/ 
$isIosChrome = (strpos($_SERVER['HTTP_USER_AGENT'], 'CriOS') !== false) ? true : false; 
if ($isIosChrome == true) { 

    FacebookSession::setDefaultApplication(
     $settings['facebook']['appId'], 
     $settings['facebook']['secret'] 
     ); 
    $helper = new FacebookRedirectLoginHelper($settings['facebook']['redirectUrl']); 
     $session = $helper->getSessionFromRedirect(); 
    if ($session) { 
     //var_dump($session); 
     $user_profile = (new FacebookRequest(
      $session, 'GET', '/me' 
     ))->execute()->getGraphObject(GraphUser::className()); 
     $uid=$user_profile->getID; 
     echo $uid; 
    } 
    else{ 
     $loginUrl = $helper->getLoginUrl(); 
     header("location:".$loginUrl); 
     exit; 
    } 
} 
+2

questa domanda non è del tutto fuori moda, e la vostra soluzione dovrebbe funzionare, ma il problema con esso è che è lato server basato che non funzionerà con il caching. Probabilmente dovrebbe essere facile fare tutto in JS. In questo momento è per me una priorità bassa, ma ci provo più tardi –

Problemi correlati