作为Facebook及其用途的完全陌生人,我问你关于登录用户的以下问题:
当使用最新的php SDK(截至今天,php-sdk-3.2.3)时,我阅读了SDK文档(https://developers.facebook.com/docs/reference/php/)并可以登录用户并根据请求的权限从他们那里获取信息 .
还有,这是关于手动构建登录流程的另一个文档:
https://developers.facebook.com/docs/facebook-login/manually-build-a-login-flow/
那里有几点关于“确认身份”和交换我认为值得玩弄的令牌 . 当我尝试将SDK方法与其他方面结合起来时,第二个要执行的方法总是失败(关于“已使用此授权代码”的一些内容,我可以将其理解为Oauth规范的一部分) . 我疯狂地交换和更新令牌,但也许这不是必要的......
...这是一个问题:php SDK部分是否为您做了这些确认?它足够安全吗?在这种情况下,这个 - 几乎太熟悉,快速和肮脏 - 代码正是我需要获取用户信息,对吧?
$facebook = new Facebook(array( [something something]));
if($facebook->getUser())
{
try
{
$user_profile = $facebook->api('/me','GET');
}
catch(FacebookApiException $e)
{
echo '<a href="'.$facebook->getLoginUrl().'">login.</a>';
}
}
else
{
echo '<a href="'.$facebook->getLoginUrl().'">login.</a>';
}
1 回答
是的,SDK会为您完成所有这些操作 - 手动构建登录流文档适用于未使用SDK的用户(例如,对于他们使用的语言不存在SDK) .
我检查了PHP SDK source,只是为了确定 - getUser() 调用 getUserFromAvailableData() ,如果你不是Facebook里面的应用程序(带有签名请求),它会调用 getAccessToken() ,调用 getUserAccessToken() ,而后者调用 getAccessTokenFromCode() ,它会交换一个代码的accessToken . 如果它有签名请求(是Facebook上的应用程序),那么访问令牌将在POST数据中提供,并且不需要交换代码 . 唷!