【问题标题】:Post to Facebook Page as an App; Can this be done?作为应用程序发布到 Facebook 页面;这可以做到吗?
【发布时间】:2018-07-20 21:12:35
【问题描述】:

我想知道以下是否可行,因为我在阅读 FB 的文档后不清楚。这是场景:

网站拥有撰写文章的作者。作者希望将这些文章的链接分享到有影响力的人(“影响者”)拥有的 FB 页面。影响者希望允许网站自动将文章链接发布到他们的页面。网站作者不是 FB 用户,因此不能被要求登录 FB。相反,文章链接需要通过网站的 FB 应用程序共享。这将发生在服务器端。

那时我知道网站的 FB 应用程序需要获得许可才能发布到影响者的页面,但我无法在客户端向网站作者请求此权限,因为他们不是 FB 用户。根据文档,我们可以要求影响者进行一次性设置以允许 FB 应用程序发布到他们的页面是合理的,但我担心页面访问令牌似乎会在几个小时后过期。

我真正想要的是影响者能够授予 FB 应用永久访问权限以在其主页上共享链接。这可能吗?

我不一定要寻找代码,只是建议我需要在何时何地执行哪些操作来进行设置。谢谢!

【问题讨论】:

  • 获取一个长期存在的页面访问令牌。它不会过期。
  • @WizKid 澄清一下,我应该让影响者授予应用程序发布到页面的权限,然后将该访问令牌转换为长寿命令牌,你说它不会过期?如果是这样的话,那就太酷了!感谢您的提示。

标签: facebook facebook-graph-api facebook-page


【解决方案1】:

如果您希望扩展页面访问令牌,供参考:

public async Task<string> ExtendAccessTokenAsync(string accessToken)
{
    dynamic response = await ExtendAccessTokenAsync<dynamic>(accessToken);

    return response.access_token;
}

private async Task<T> ExtendAccessTokenAsync<T>(string accessToken)
{
    var response = await httpClient.GetAsync($"oauth/access_token?grant_type=fb_exchange_token&client_id={options.AppId}&client_secret={options.AppSecret}&fb_exchange_token={accessToken}");

    if (!response.IsSuccessStatusCode)
    {
        return default(T);
    }

    var result = await response.Content.ReadAsStringAsync();

    return JsonConvert.DeserializeObject<T>(result);
}

T 可以是表示返回对象的类(请参阅 FB 文档的属性),或者在我的情况下,我只使用 dynamic 表示 T,因为我只想要 access_token 属性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多