【问题标题】:Getting Facebook Auth Token Using FSharp使用 FSharp 获取 Facebook Auth 令牌
【发布时间】:2015-08-31 03:50:31
【问题描述】:

我正在尝试使用以下代码从 facebook 获取 OAuth 令牌:

let applicationId = "12345"
let applicationSecret = "12345"

let tokenBuilder = new StringBuilder()
tokenBuilder.Append("https://graph.facebook.com/v2.3/oauth/access_token?")
tokenBuilder.Append("client_id=")
tokenBuilder.Append(applicationId)
tokenBuilder.Append("&redirect_uri=")
tokenBuilder.Append("https://www.facebook.com/connect/login_success.html")
tokenBuilder.Append("&client_secret=")
tokenBuilder.Append(applicationSecret)

let tokenUri = tokenBuilder.ToString()
let tokenClient = new WebClient()
let tokenResponse = tokenClient.UploadString(tokenUri,String.Empty)

当我运行它时,我得到了这个:

System.Net.WebException:远程服务器返回错误:(400) 错误的请求。

谁能告诉我我做错了什么?我可以为应用程序进行大量配置,我猜是这样的:

【问题讨论】:

  • 大胆猜测:您不需要对重定向 URL 进行 URL 编码吗?
  • 不走运。 UrlEncoding responseUri 仍然失败。
  • 您是否有一个可行的示例(即使使用其他语言/平台),以便我们进行比较?
  • 呃,这是问题的一部分。有一个 Facebook.NET SDK,但它假定 WinPhone/Win8/Metro 应用程序和 Win10 更新是通用应用程序。我尝试使用 F# (PCL) 都没有任何运气,所以我现在只能使用 webClient 和 POSTS。主要的sdk在这里:facebooksdk.net
  • @JamieDixon:我相信您还应该在您的请求中添加 OAuth2 流授权类型设置,例如:tokenBuilder.Append("&grant_type=client_credentials")

标签: facebook facebook-graph-api f#


【解决方案1】:

不完全是您问题的答案,但这就是您如何使用来自 Facebook SDK 的FacebookClient 获取 OAuth2 不记名令牌:

// nuget Facebook package
open Facebook
type Credentials() = // There are better ways around to make a POCO, anyways...
    member __.client_id with get() = "...your facebook app id here"
    member __.client_secret with get() = "...your facebook app secret here"
    member __.grant_type with get() = "client_credentials"

let fb = FacebookClient()     
let token = fb.Get("oauth/access_token", Credentials())

回到token 类似:

seq [[access_token, 239907752864330+s3c5obp-fO7DoVX4pPiN69OdAS4]]

【讨论】:

  • 我正在取回令牌,但是当我尝试请求资源时,我遇到了失败:let client' = FacebookClient(token.access_token) client'.Get("me") let pageId =“我”类型 FacecbookPost = {title:string; message:string} 让 post = {title="测试标题"; message = "Test Message"} client'.Post(pageId + "/feed", post) 必须使用活动访问令牌来查询有关当前用户的信息。有没有办法更新令牌?
  • 您确定失败的原因是令牌过期而不是任务的错误OAuth2 flow
猜你喜欢
  • 2013-08-17
  • 2017-11-10
  • 2013-04-06
  • 1970-01-01
  • 2017-02-24
  • 2014-07-08
  • 1970-01-01
  • 2014-10-08
  • 1970-01-01
相关资源
最近更新 更多