我正在撰写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文件中吗?令牌持续多长时间?
提前致谢
答案 0 :(得分:2)
我认为你还没有完全理解Facebook API如何运作。
您总是需要一个应用来执行操作(在您的情况下,APP是859968674039398)
为了代表用户发帖,您需要该用户向您的应用授予权限。
您的应用必须是公开的,如果您需要比基本版权更多的权限,则需要完成审核流程。
您从Graph API Explorer(应用程序BTW)获取的访问令牌仅适用于您。
请阅读CBro提供的文档。
我希望它有所帮助。