使用登录名和密码在Facebook中自动共享帖子

时间:2015-04-04 21:32:23

标签: c# facebook facebook-graph-api

我构建一个动态生成图像的Web应用程序(选择背景+用户给出的引用),在生成图像的过程结束时,我想禁用“保存图像”选项,并自动在我的Facebook页面上分享这个图像不是用户的,我发现很多示例显示如何在当前的Facebook帐户上创建帖子),然后将用户重定向到该帖子在我的页面上,以便他可以从我的页面分享图像?

无论如何我不能在C#或Java脚本背后的代码中做到这一点(欢迎任何领导......)

1 个答案:

答案 0 :(得分:0)

这是可能的,应该在服务器端完成,因为你需要一个页面访问令牌来保持。

首先,您需要获取一个页面访问令牌并延长它的到期时间。这可以按如下方式完成:

  1. 转到https://developers.facebook.com/tools/explorer/,然后从应用程序下拉菜单中选择您的应用。
  2. 选择获取令牌并设置以下范围 - publish_actions和manage_pages。
  3. 提交我/帐户以获取您管理的网页列表及其网页访问令牌
  4. 复制您需要的访问令牌并使用这些指令对其进行扩展,这些指令将返回一个长期访问令牌 - https://developers.facebook.com/docs/facebook-login/access-tokens#extending
  5. 现在您拥有服务器端代码所需的访问令牌。

    此处记录了发布照片。您正在击中的端点取决于您是否要将照片添加到相册 https://developers.facebook.com/docs/graph-api/reference/v2.3/photo#publishing

    对于服务器端代码,您可以使用此.net sdk http://facebooksdk.net/来文件上传文件http://facebooksdk.net/docs/making-synchronous-requests/

    var fb = new FacebookClient("your saved access token");
    string attachementPath = @"C:\\image.jpg";
    dynamic result = fb.Post("me/photos",
    new
        {
            file = new FacebookMediaObject
                    {
                        ContentType = "image/jpeg",
                        FileName = Path.GetFileName(attachementPath)
                    }.SetValue(File.ReadAllBytes(attachementPath))
        });
    var postId = result.id