2014-11-13 4 views
9

"지원되지 않는 브라우저가 있습니다.이 기능을 지원하지 않는 Chrome이 있습니다. 사파리를 사용하고 다시 시도하십시오. 아이폰에서 FB.ui API를 사용하여 공유 대화 상자를 열려고 할 때.IOS에서 Chrome에서 FB.ui를 사용하려고 할 때 "지원되지 않는 브라우저 ..."를 피하려면 해결 방법

이 질문은 관련 Facebook OAuth "Unsupported" in Chrome on iOS과 같지만 공유 및 인증 자체에 관심이 없습니다 (즉, 사용자가 로그인하면 걱정하지 않습니다.).

+0

[이 문제를 어떻게 해결 했나요?] [1] : http://stackoverflow.com/a/32394517/1435014 – apandey846

답변

3

나는 이것이 낡은 질문이지만, 다른 사람들이 이런 종류의 문제에 직면했다면 (나는 어떤 인터넷 검색이 이유 때문에 여기에 있음을 의미한다).

facebook 공유 대화 상자에서 공유하려면 로그인 할 필요가 없습니다. 당신이 사용하는 경우이 iOS 용 크롬에서 작동하지 않습니다

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

하지만 회로 그러나 운이 좋게 (이 에 대한 해결 방법이 있습니다 :

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

보통 당신은이 JS SDK를,과 같이 사용 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에서 크롬을 사용하는 경우 감지 한 후 "FB 공유기"-link로하여 FB.ui 기능을 위해 트리거 요소를 교체해야합니다. 당신은 항상 공유기를 사용하고 싶지 않기 때문에 js sdk가 작동하지 않을 때만 사용하십시오.

그리고 인터넷상의 모든 사이트가 페이스 북으로 OG 객체로 취급되기 때문에 사이트에 올바른 OG 태그가 포함되어 있는지 확인하면됩니다.

그러나 페이스 북 앱 (또는 사이트)이 다른 목적으로 로그인해야하고 크롬에 ​​의해 "지원되지 않는 브라우저"메시지가 표시되는 경우 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; 
    } 
} 
+2

이 질문의 유효 기간이 전혀없는, 그리고 해결 방법은 작동해야하지만 그것으로 문제는 서버 측 있다는 것이다 기반 캐싱과 함께 작동하지 않습니다. 아마 JS에서 그것을 모두하기 쉬울 것입니다. 지금은 나에게 우선 순위가 낮지 만 나중에 시도해 볼 것입니다. –