如何在没有任何登录凭据的情况下使用appid和app secret获取facebook访问令牌?

时间:2014-06-25 06:01:48

标签: facebook facebook-graph-api c#-4.0 facebook-access-token windows-applications

我需要在C#windows应用程序中使用appid和app secret来获取FaceBook访问令牌。实际上我做了以下编码,但获得app令牌只是没有获得访问令牌。

如何实现检索访问令牌。?

 FacebookClient client = new FacebookClient();
            dynamic result = client.Get("oauth/access_token", new
            {
                client_id = "1498796747020950",
                client_secret = "c50341f5b4e42a595f0791467f439e38",
                grant_type = "client_credentials"
            });
          var  accessToken = result.access_token;

1 个答案:

答案 0 :(得分:14)

您要求的令牌是一个应用访问令牌,不能用于每个API调用(而是它的使用非常有限)。

让我尝试详细说明访问令牌和OAuth 2.0,以使概念清晰。

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. 如果您不想构建此手动流程,则可以使用负责此流程的SDK。它只会调用outh对话框,如果成功将为您提供响应中的访问令牌。 Facebook为iOSAndroidJavascriptPHP提供官方SDK;还有other third-party SDKs。 现在,这将为我们提供一个访问令牌,更准确地说是一个 用户访问令牌 。这是获取用户访问令牌所需的 进程(即需要用户参与)。您要求的是应用程序访问令牌,我现在将详细说明Facebook访问令牌 -

    访问令牌

    有三种类型的访问令牌可以支持不同的用例:

    • 用户访问令牌 - 用户令牌是最常用的使用的令牌类型。只要应用程序调用API以代表他们读取,修改或写入特定人员的Facebook数据,就需要这种访问令牌。我已经解释了获取此令牌的详细过程。

    • 应用访问令牌 - 应用访问令牌用于代表应用而非用户向Facebook API发出请求。这可用于修改应用程序的参数,创建和管理测试用户,或阅读应用程序的见解。应用程序访问令牌也可用于代表已向您的应用程序授予开放图形发布权限的人员向Facebook发布内容。

      除此之外,应用访问令牌无法做到。它就像你的应用程序的密码,所以重要的是你的应用秘密永远不会与任何人共享。这可以通过您在问题中提到的API调用获得 -

      GET /oauth/access_token?
           client_id={app-id}
           &client_secret={app-secret}
           &grant_type=client_credentials
      

      或直接from here,或只使用{app-id}|{app-secret}

    • 页面访问令牌 - 页面访问令牌用于Graph API调用以管理Facebook页面。要生成页面访问令牌,页面管理员必须授予名为manage_pages的扩展权限。授予此权限后,您可以使用以下Graph API请求检索页面访问令牌:

      /GET  /{page-id}?fields=access_token
      

    <子> Reference


    我不确定这一切对你来说是否意义重大,但我希望它可以帮助你清除对此相关的一些疑问。

    如果应用访问令牌对您很重要,您可以通过我提到的三种方法中的任何一种来使用它。如果没有,用户访问令牌就是你需要的,没有用户交互就无法获得。