首页 文章

登录后,Facebook PHP SDK验证

提问于
浏览
0

作为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 回答

  • 1

    是的,SDK会为您完成所有这些操作 - 手动构建登录流文档适用于未使用SDK的用户(例如,对于他们使用的语言不存在SDK) .

    我检查了PHP SDK source,只是为了确定 - getUser() 调用 getUserFromAvailableData() ,如果你不是Facebook里面的应用程序(带有签名请求),它会调用 getAccessToken() ,调用 getUserAccessToken() ,而后者调用 getAccessTokenFromCode() ,它会交换一个代码的accessToken . 如果它有签名请求(是Facebook上的应用程序),那么访问令牌将在POST数据中提供,并且不需要交换代码 . 唷!

相关问题