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

Pre*_*mar 5 facebook windows-applications facebook-graph-api c#-4.0 facebook-access-token

我需要在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;
Run Code Online (Sandbox Code Playgroud)

Sah*_*tal 14

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

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

OAuth 2.0

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

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

    参数 -

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

    Returns-

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

    {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

如果您不想构建此手动流程,则可以使用负责此流程的SDK.它只会调用outh对话框,如果成功将为您提供响应中的访问令牌.Facebook为iOS,Android,JavascriptPHP提供官方SDK ; 还有其他第三方SDK.现在,这将为我们提供一个访问令牌,更准确地说是一个用户访问令牌.这只是获取用户访问令牌所需的过程(即需要用户参与).你要求的是一个app访问令牌,我现在将详细说明facebook访问令牌 -

访问令牌

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

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

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

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

    GET /oauth/access_token?
         client_id={app-id}
         &client_secret={app-secret}
         &grant_type=client_credentials
    
    Run Code Online (Sandbox Code Playgroud)

    或直接从这里,或只是使用{app-id}|{app-secret}

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

    /GET  /{page-id}?fields=access_token
    
    Run Code Online (Sandbox Code Playgroud)

参考


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

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