问题描述
|
我正在使用Facebook OAuth界面,但无法使即时模式参数正常工作。您是否知道该如何与FB或其他任何使用的网址一起使用?
(我不/不能使用FB JS库。)
解决方法
使用户使用其Facebook帐户登录到您的网站的一种好方法是使用Facebook PHP SDK(请参阅github)。因此,您将得到类似:
require \"facebook.php\";
$facebook = new Facebook(array(
\'appId\' => YOUR_APP_ID,\'secret\' => YOUR_APP_SECRET,));
$user = $facebook->getUser();
如果用户已登录,则“ 1”是他的Facebook ID。然后,您必须通过进行API调用来检查您是否具有有效的访问令牌:
如果没有引发任何异常,则您具有有效的访问令牌
如果是这样,则您必须重新认证用户。
干得好 :
if ($user) {
try {
$facebook->api(\'/me\');
} catch (FacebookApiException $e) {
$user = null;
}
}
然后,您需要显示登录或注销链接:
<?php if ($user): ?>
<a href=\"<?php echo $facebook->getLogoutUrl() ?>\">Logout of Facebook</a>
<?php else: ?>
<a href=\"<?php echo $facebook->getLoginUrl() ?>\">Login with Facebook</a>
<?php endif ?>
当用户登录并且您具有有效的访问令牌时,可以进行API调用以从Facebook获取数据:
$user_profile = $facebook->api(\'/me\');
您可能需要检查Facebook PHP SDK的示例页面,该页面有充分的文档记录。
希望能有所帮助。
, 我从FB php-sdk中提取了以下网址(昆汀提醒我):
https://www.facebook.com/extern/login_status.php
?api_key=<your app-id or api-key>
&no_user=<callback url>
&no_session=<callback url>
&ok_session=<callback url>
&session_version=3
当您将用户重定向到上面的网址(或以iframe或弹出窗口的形式打开)时,Facebook会静默/立即将用户/浏览器重定向到:
user6ѭ用户未登录时。
user7 but,当用户登录但尚未授权您的应用时。
ok_session
,当用户登录并已授权您的应用时。需要验证的其他参数(用户标识和必需的令牌)将由FB附加到此URL。
例如:
https://www.facebook.com/extern/login_status.php
?api_key=123456789012345
&no_user=http://example.com/signin/fb/no_user
&no_session=http://example.com/signin/fb/no_session
&ok_session=http://example.com/signin/fb/ok_session
&session_version=3
将它们放在一行中,不要留空格,并且如果需要,请不要忘记对网址进行编码。
请参阅“ OpenID立即模式”以了解为何有用。
, 如果您正在开发基于Java的应用程序,则可以使用SoicalAuth库。
http://code.google.com/p/socialauth/