任何解决方法,以避免“不受支持的浏览器......”当试图在Chrome上使用FB.ui IOS
我得到一个“不受支持的浏览器:铬ios不支持此功能。请使用Safari浏览器,然后再试一次”当试图通过在iPhone上使用FB.ui API来打开共享对话框时。任何解决方法,以避免“不受支持的浏览器......”当试图在Chrome上使用FB.ui IOS
我想这个问题是相关的Facebook OAuth "Unsupported" in Chrome on iOS,但我有兴趣分享和不认证本身(即我不在乎如果用户将登录,我不会知道它)。
我知道这是一个古老的问题,但如果有其他人面临这样的问题,(我的意思是一些谷歌搜索让我在这里出于某种原因)。
Facebook共享对话框不需要登录共享。
https://developers.facebook.com/docs/sharing/reference/share-dialog
通常使用JS SDK,就像这样:
FB.ui({
method: 'share',
href: 'https://developers.facebook.com/docs/',
}, function(response){});
Unfortunally这将在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共享者” -link的的FB.ui功能。因为你不想一直使用共享器,只有当js sdk不工作时。
而且因为互联网上的每个站点都被Facebook视为OG对象,所以您只需确保您的站点包含正确的OG标签。
但是,如果您的Facebook应用程序(或网站)需要登录用于其他目的,并且您通过chrome面对“不支持的浏览器”消息,则可以通过php重定向登录来登录您的用户(这要求您使用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;
}
}
这个问题是完全没有过时,你的解决方法应该可行,但它存在的问题是,它是服务器端基于这将不会与缓存工作。在JS中应该很容易做到这一切。现在它对我来说是不重要的,但稍后会试一试 –
检查[这里] [1]我是如何解决这个问题的! [1]:http://stackoverflow.com/a/32394517/1435014 – apandey846