如何使用WebView中的JS API登录facebook

时间:2014-02-04 13:11:54

标签: javascript facebook qt webview

我想从移动设备(FaceBook)使用WebView登录。 我正在尝试使用本教程https://developers.facebook.com/docs/facebook-login/login-flow-for-web

中的示例进行登录

但是我收到以下错误

  

应用程序配置不允许使用URL:一个或   应用程序的设置不允许更多的给定URL。它必须   匹配网站URL或Canvas URL,或域必须是子域   App的一个域名。

根据此manual,我必须使用伪造的redirect_uri来提供oauth服务才能从WebView

登录
  

https://www.facebook.com/connect/login_success.html

现在,连接字符串看起来像这样

  

https://www.facebook.com/connect/ping?client_id=188978851312862&domain=&origin=1&redirect_uri=http://static.ak.facebook.com/connect/xd_arbiter.php?version=29#cb=fc2b211fc&domain=&origin=file%3A%2F%2F%2Ff3b6d7ef1c&relation=parent&response_type=token,signed_request,code&sdk=joey

如果您转到此链接,您将收到错误消息。但是,如果我将redirect_uri更改为此

  

https://www.facebook.com/connect/ping?client_id=188978851312862&domain=&origin=1&redirect_uri=https://www.facebook.com/connect/login_success.html&domain=&origin=file%3A%2F%2F%2Ff3b6d7ef1c&relation=parent&response_type=token,signed_request,code&sdk=joey

它会成功。

是否可以设置伪造重定向uri并使用标准JS API

UPD:实际上授权完整,但API的事件(auth.authResponseChange)不会触发。 originredirect_uri参数中的问题,当我从移动设备的WebView登录时设置为file://

2 个答案:

答案 0 :(得分:0)

据我所知,如果您在WebView中,“重定向到https://www.facebook.com/connect/login_success.html”的建议是,它将重定向到那里,一些授权密钥“也在网址中”,然后你可以解析它们并关闭你的WebView,所以基本上是一次性标注,FWIW。我的另一个猜测是原点在那里,但实际上没有被它们检查或使用[?]

就“使用标准JS API”而言,我认为你可以,但它是non trivial see here

答案 1 :(得分:-1)

https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/v2.0你使用的是这个吗?如果您需要更多帮助给我一个嗡嗡声,只需制作其中一个