给定APP秘密和客户端ID检索Facebook用户访问令牌

时间:2016-01-04 16:01:46

标签: php facebook facebook-graph-api oauth facebook-php-sdk

以下Facebook网址:

https://developers.facebook.com/tools/accesstoken/

显示来自Facebook用户创建的应用程序的所有用户令牌。

我现在可以手动检索我的Facebook 用户访问令牌source):

OAuth 2.0

  1. 使用标准OAuth 2.0实施,第一步是调用服务提供商(facebook)的 OAuth对话 -

      

    \GET http://www.facebook.com/dialog/oauth

         

    参数 -

         
        
    • client_id(APP ID)
    •   
    • redirect_uri(应用重定向网址)
    •   
    • scope(权限 - 可选)   

    •   
         

    返回 -

         
        
    • code(附加重定向网址)
    •   
  2. 用户成功验证了应用后,服务提供商(facebook)返回code并附加了redirect_url。所以你将被重定向到 -

      

    {redirect-url}?code=XXXXXXXXXXXXXXXXX

    然后我们使用此code并请求 access_token -

      

    \GET https://graph.facebook.com/oauth/access_token

         

    参数 -

         
        
    • client_id(APP ID)
    •   
    • client_secret(APP秘密)
    •   
    • code
    •   
    • redirect_uri
    •   
  3. 这很好用,但正如您所看到的那样,需要手动步骤才能从重定向的URL中检索代码并将其添加到返回用户访问令牌的第二个URL中。但是,我不知道如何自动执行此过程,即,给定用户 App ID App Secret ,检索我的用户访问令牌没有手动步骤。

    有没有办法用PHP脚本检索用户访问令牌?

    以下是我尝试使用PHP SDK实现此目的:

    require_once __DIR__ . '/vendor/autoload.php';
    
    $fb = new Facebook\Facebook([
      'app_id' => '<my app id>',
      'app_secret' => '<my app secret>',
      ]);
    
    $helper = $fb->getRedirectLoginHelper();
    
    $accessToken = $helper->getAccessToken();
    

    然而 $ accessToken 返回NULL。

    可能还有其他方法可以使用Facebook PHP SDK吗?

1 个答案:

答案 0 :(得分:3)

无法自动获取用户令牌或自动执行用户授权。这将使整个用户授权毫无意义,并且没有严重的用例。获取用户令牌的唯一方法是手动授权用户(通过构建手动登录流程或使用其中一个SDK)。