任何解决方法,以避免“不受支持的浏览器…”当尝试在IOS上的铬上使用FB.ui

当我尝试使用iPhone上的FB.ui API打开共享对话框时,出现“不受支持的浏览器:Chrome for Chrome不支持此function,请使用Safari并重试”。

我猜这个问题是相关Facebook的OAuth在iOS的Chrome“不支持” ,但我有兴趣分享,而不是自己的身份validation(即我不在乎如果用户将login,我不会知道这一点)。

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

Facebook共享对话框不需要login分享。

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共享程序”链接replaceFB.uifunction的触发器元素。 因为你不想一直使用共享器,所以只有当js sdk不工作。

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

但是,如果您的Facebook应用程序(或网站)需要login用于其他目的,并通过铬面对“不支持的浏览器”消息,您可以login您的用户通过PHPredirectlogin(这要求您使用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; } }