尝试在IOS上的chrome上使用FB.ui时避免"unsupported browser ..."的任何解决方法



当我试图在iphone上使用FB.ui API打开共享对话框时,我得到了一个"不支持的浏览器:chrome for ios不支持此功能。请使用safari并重试"。

我猜这个问题与Facebook OAuth有关;不支持的";在iOS上的Chrome中,但我感兴趣的是共享,而不是身份验证本身(即我不在乎用户是否会登录,我也不会知道)。

我知道这是一个老问题,但如果其他人面临这种问题,(我的意思是,一些谷歌搜索让我来这里是有原因的)。

facebook共享对话框不需要登录即可共享。

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

通常你使用js-sdk,比如:

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

不幸的是,这在iOs上的Chrome中不起作用,但幸运的是,有一个解决办法(如果您使用的是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']);
}

因此,基本上,你需要检测用户是否在iOs上使用Chrome,然后用"FB sharer"链接替换FB.ui功能的触发元素。因为你不想一直使用sharer,只有当js-sdk不工作的时候。

因为互联网上的每个网站都被脸书视为OG对象,你只需要确保你的网站包含正确的OG标签。

但是,如果你的facebook应用程序(或网站)出于其他目的需要登录,并且你面临chrome发出的"不支持浏览器"消息,你可以通过php重定向登录来登录你的用户(这需要你使用php-sdk)。

use FacebookFacebookSession;
use FacebookFacebookRedirectLoginHelper;
use FacebookFacebookRequest;
use FacebookGraphUser;
use FacebookFacebookRequestException;
/**
*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;
    }
}

相关内容

最新更新