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

时间:2015-09-07 13:50:11

标签: facebook facebook-c#-sdk

我正在撰写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")

返回

  

必须使用活动访问令牌来查询有关的信息   当前用户。

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

返回

  

用户尚未授权应用程序执行此操作

当我阅读文档时,他们谈到让Facebook批准申请 - &gt;但是在我的用例b / c中没有任何意义,没有人类最终用户定义的应用程序 - &gt;甚至是调用代码的任何其他用户。

当我使用正确的权限在Facebook Graph Api explorer上生成令牌时,我可以使用令牌来制作那些GETS和POSTS。我应该只生成令牌并将其粘贴在我的.config文件中吗?令牌持续多长时间?

提前致谢

1 个答案:

答案 0 :(得分:2)

我认为你还没有完全理解Facebook API如何运作。

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

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

  3. 您的应用必须是公开的,如果您需要比基本版权更多的权限,则需要完成审核流程。

  4. 您从Graph API Explorer(应用程序BTW)获取的访问令牌仅适用于您。

    请阅读CBro提供的文档。

    我希望它有所帮助。