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

标签 ios facebook google-chrome fb.ui

尝试在 iphone 上使用 FB.ui API 打开共享对话框时,我收到“不受支持的浏览器:chrome for ios 不支持此功能。请使用 safari 并重试”。

我想这个问题是相关的 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){});

不幸的是,这在 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']);
}

所以基本上,您需要检测用户是否在 iO 上使用 Chrome,然后将 FB.ui 功能的触发元素替换为“FB 共享器”链接。因为你不想一直使用sharer,只有在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;
    }
}

关于ios - 尝试在 IOS 上的 chrome 上使用 FB.ui 时避免出现 "unsupported browser ..."的任何解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26916545/

相关文章:

javascript - 更改xlink :href attribute in Google Chrome

html - 带有边框折叠的 Chrome 渲染错误

ios - 处理 UI 中的异步事件

iphone - 如何自定义 UIAlert View..?

ios - 将 Facebook iOS SSO 用于打包的 Web 应用程序?

javascript - Chrome 扩展程序通过消息传递与网页进行通信

ios - App Store - 水平滚轮应用选择器

ios - 销售音乐的应用内购买

javascript - Facebook 未授予访问用户上传照片的权限

facebook - 无法将 Facebook channel 添加到 Microsoft Bot Framework