如何在不使用 fb-login 按钮的情况下从我的 facebook connect 网站注销用户?我想从代码隐藏(c#)中做到这一点?
8 回答
我发现只有一个选项可以通过 Javascript 从FB.logout()
. 似乎有点奇怪,没有来自代码隐藏的 API 来做同样的事情。
如果你只想要一个简单的链接来注销用户,你可以形成一个这样的 url:
https://www.facebook.com/logout.php?access_token=ACCESS_TOKEN&confirm=1&next=REDIRECT
只需将ACCESS_TOKEN
and替换REDIRECT
为适当的值。Facebook 时不时地改变这一点,所以你必须注意这一点。这仅适用于浏览器,但这样做的好处是用户不必等待 JavaScript 库加载。
您可以通过 facebook.API 类 (facebook.dll) 的实例轻松完成此操作。只需调用 _api.LogOff()
我的痛苦经历告诉我你必须有回报(假);在 FB.Connect.logout() 之后;像这样打电话:
FB.Connect.logout(doOnUserLogout()); 返回(假);
否则,它看起来像是正在注销,模式对话框说明了这一点,但它不会将用户注销。
我偶然发现了这一点,因为它再次没有记录在案。
似乎 ConnectSession 在注销方法中没有任何代码。只是
void Logout(){ }
没有任何东西。同样的Login(){}
所以基本上你需要使用 java-script 版本
curl 和类似 preg_match("/a href=\"\/logout.php(.*?)\"/", $page, $logout_param);
然后...
curl_setopt($ch, CURLOPT_URL, 'http://m.facebook.com/logout.php' . $logout_param[1]); curl_exec($ch);
??
至少在 php api 中有一个注销方法。为了使其正常工作,注销方法将用户重定向到 facebook.com 中的 url,然后将您重定向回您的站点
$facebook->注销(“ http://site.com/returnAfterLogout.php ”)
但是我发现在该请求中,javascript api 仍然认为 php api 仍然认为他已登录,并且在您尝试执行 api 请求之前它会引发异常。
我在 Webview 中使用:
webview.loadUrl("http://www.facebook.com/logout.php?confirm=1");