Facebook .NET SDK -> 使用生成的令牌获取和 Post

Facebook .NET SDK -> Get and Post using generated token

我正在编写一个 Azure 服务,它偶尔会作为状态写入我的 Facebook 页面。由于该服务没有 UI 组件,因此 Facebook 和 Facebook .NET SDK 页面上的大多数示例都没有帮助。

我在 facebook 上创建了一个应用程序,然后在 Visual Studio 中启动了 F# REPL。我像这样生成了令牌:

#r "../packages/Facebook.7.0.6/lib/net45/Facebook.dll"
#r "../packages/Newtonsoft.Json.7.0.1/lib/net45/Newtonsoft.Json.dll"

open Facebook
open Newtonsoft.Json

type Credentials = {client_id:string; client_secret:string; grant_type:string;scope:string}
let credentials = {client_id="859968674039398";
                   client_secret="XXXXXXXXXX";
                   grant_type="client_credentials";
                   scope="manage_pages,publish_stream,read_stream,publish_checkins,offline_access"}

let client = FacebookClient()
let tokenJson = client.Get("oauth/access_token",credentials)
type Token = {access_token:string}
let token = JsonConvert.DeserializeObject<Token>(tokenJson.ToString())

令牌如期返回。但是,当我去使用令牌时,出现错误:

let client' = FacebookClient(token.access_token)
let me = client'.Get("me")

returns

An active access token must be used to query information about the current user.

let pageId = "/me"
type FacecbookPost = {title:string; message:string}
let post = {title="Test Title"; message = "Test Message"}
let postResponse = client'.Post(pageId + "/feed", post)

returns

The user hasn't authorized the application to perform this action

当我阅读文档时,他们谈论让应用程序获得 Facebook 的批准 -> 但这在我的用例中没有意义 b/c 没有为人类最终用户定义的应用程序 - > 甚至调用代码的任何其他用户。

当我在 Facebook Graph Api explorer 上生成具有正确权限的令牌时,我可以使用该令牌进行这些 GETS 和 POST。我应该只生成令牌并将其粘贴到我的 .config 文件中吗?令牌持续多长时间?

提前致谢

我认为您还没有完全理解 Facebook API 的运作方式。

  1. 您总是需要一个 App 来执行操作(在您的情况下,该 APP 是 859968674039398)

  2. 为了 post 代表用户,您需要该用户向您的应用授予权限。

  3. 您的应用必须public,如果您需要比基本权限更多的权限,则需要通过审核流程。

您从 Graph API Explorer(这是一个应用程序 BTW)获得的访问令牌仅供您使用。

请阅读 CBro 提供的文档。

希望对您有所帮助。