Facebook OAuth "Unsupported" in Chrome on iOS
You can use the redirection method as follow for this case (by detecting the user agent being chrome ios):
https://www.facebook.com/dialog/oauth?client_id={app-id}&redirect_uri={redirect-uri}
See more info here https://developers.facebook.com/docs/facebook-login/login-flow-for-web-no-jssdk/
Remark: I personnaly use the server OAuth in that case but this should do the trick and is quite simple
This is how I did it (fixing iOS chrome specifically)
// fix iOS Chromeif( navigator.userAgent.match('CriOS') ) window.open('https://www.facebook.com/dialog/oauth?client_id='+appID+'&redirect_uri='+ document.location.href +'&scope=email,public_profile', '', null);else FB.login(null, {scope: 'email,public_profile'});
Here is a complete workaround for your FB JS Auth on Chrome iOS issue http://seanshadmand.com/2015/03/06/facebook-js-login-on-chrome-ios-workaround/
JS functions to check auth, open FB auth page manually and refresh auth tokens on original page once complete:
function openFBLoginDialogManually(){ // Open your auth window containing FB auth page // with forward URL to your Opened Window handler page (below) var redirect_uri = "&redirect_uri=" + ABSOLUTE_URI + "fbjscomplete"; var scope = "&scope=public_profile,email,user_friends"; var url = "https://www.facebook.com/dialog/oauth?client_id=" + FB_ID + redirect_uri + scope; // notice the lack of other param in window.open // for some reason the opener is set to null // and the opened window can NOT reference it // if params are passed. #Chrome iOS Bug window.open(url);}function fbCompleteLogin(){ FB.getLoginStatus(function(response) { // Calling this with the extra setting "true" forces // a non-cached request and updates the FB cache. // Since the auth login elsewhere validated the user // this update will now asyncronously mark the user as authed }, true);}function requireLogin(callback){ FB.getLoginStatus(function(response) { if (response.status != "connected"){ showLogin(); }else{ checkAuth(response.authResponse.accessToken, response.authResponse.userID, function(success){ // Check FB tokens against your API to make sure user is valid }); } });}
And the Opener Handler that FB auth forwards to and calls a refresh to the main page. Note the window.open in Chrome iOS has bugs too so call it correctly as noted above:
<html><head><script type="text/javascript">function handleAuth(){ // once the window is open window.opener.fbCompleteLogin(); window.close(); }</script><body onload="handleAuth();"> <p>. . . </p></body></head></html>