facebook redirect_uri设置为ios URL Scheme

我开始研究如何以编程方式使用Facebook。

我在我的应用程序中设置了URL方案,以便我可以使用“myappopenup://”从浏览器中打开它。

然后我在Facebook上创建了一个应用程序。 复制了一个AppId并尝试这样做:

let url = NSURL(string: "https://www.facebook.com/dialog/oauth?client_id={MY_APP_ID_WAS_HERE}&redirect_uri=myappopenup://fbcallback") UIApplication.sharedApplication().openURL(url!) 

运行此代码后,模拟器打开了safari(我先尝试过SFSafariViewController)。 但我看到的一切是:

在此处输入图像描述

所以,我想知道:是否有可能从Facebook oauth重定向到我的应用程序?

对的,这是可能的。 这是必要的redirect_uri

  https://graph.facebook.com/oauth/authorize ?response_type=token &client_id='+'1247676148624015 &redirect_uri=fb1247676148624015://authorize 

确保您的Facebook应用已设置:

Facebook应用安装程序

并确保您的自定义URL方案已设置:

在此处输入图像描述

令人失望的评论 – 很可能误导了很多人。 但是,这些东西并没有完全记录。

我设法让Alex Paterson解决方案在这里工作。 我也必须在Facebook登录设置上添加redirect_uri URL。 在有效的OAuth重定向URI部分,我添加了回调url,如下所示:

 https://graph.facebook.com/oauth/authorize? response_type=token& client_id=12345678910& redirect_uri=fb12345678910://authorize 

正如其他一些答案和评论所表明的那样,我不认为你想要做的事情是由Facebook支持的 – 我的印象是他们真的希望你使用FBSDK来完成身份validation并从Facebook接收令牌。

感觉就像我已经尝试了使用someapp://authorize策略在阳光下进行的所有可能的配置,但看起来他们只是希望你只为Web应用程序执行此操作。

我正在使用react native(所以这可能不会直接应用。我确定obj-C在实践中有点类似),所以我使用的是react-native-fbsdk库,它暴露了LoginButtonAccessToken组件,以及你可以这样使用它们:

   { if (error) { alert("Login failed with error: " + result.error); } else if (result.isCancelled) { alert("Login was cancelled"); } else { AccessToken.getCurrentAccessToken().then((data) => { const token = data.accessToken; // send the token to your backend } ) alert("Login was successful with permissions: " + result.grantedPermissions) } } } onLogoutFinished={() => alert("User logged out")} /> 

我联系了Facebook支持,他们确认不支持:

感谢您的联系。 我们将使消息传递更加清晰,但我们不支持自定义URI方案作为有效的重定向URI。 要在不打开浏览器的情况下在本机应用程序中执行登录,请使用官方SDK( https://github.com/xamarin/FacebookComponents您要查找的内容?)。

他们在12小时内做出了回应,至少令人印象深刻。