gpt4 book ai didi

java - restFB post as page step by step 工作示例

转载 作者:搜寻专家 更新时间:2023-10-31 19:33:43 24 4
gpt4 key购买 nike

我无计可施,我似乎无法作为页面发布消息,我可以作为管理员用户发布到 Facebook 页面,但不能作为所有者本身发布到页面。

我的代码如下:

String MY_APP_ID = "xxxx";
String MY_APP_SECRET = "xxxx";

AccessToken accessToken = new DefaultFacebookClient().obtainAppAccessToken(MY_APP_ID, MY_APP_SECRET);
DefaultFacebookClient facebookClient = new DefaultFacebookClient(accessToken.getAccessToken());

FacebookType publishMessageResponse = facebookClient.publish("me/feed", FacebookType.class, Parameter.with("message", fbMessage));

fbMessageID = publishMessageResponse.getId();

我相信上面的代码获得了应用程序访问 token ,但我收到以下错误:

OAuthException: An active access token must be used to query information about the current user.

我设置了以下权限:

publish_actions, manage_pages, publish_stream

如果我将代码修改为:

FacebookType publishMessageResponse = facebookClient.publish("MYAPPNAME/feed", FacebookType.class, Parameter.with("message", fbMessage));

我收到以下错误:

OAuthException: (#200) The user hasn't authorized the application to perform this action.

我已经阅读了很多这方面的资料,但只见树木不见森林,有人可以解释我哪里出了问题以及我如何解决这个噩梦。

任何帮助将不胜感激:-)

最佳答案

我设法解决了这个问题。下面是我创建的一个简单类,用于在我的一个页面中发布帖子作为页面本身!

预编码说明:获取您的页面 AccessToken 和 PageID

  1. 转到 https://developers.facebook.com/tools/explorer
  2. 在 GET 申请表中,填写 me/accounts
  3. 您将获得基本用户数据的 Javascript 表示形式。找到您想要的页面。
  4. 注意 access_tokenid 字段,我们将在下面的代码中使用它们。

就是这样。现在,

进入程序代码!

import com.restfb.DefaultFacebookClient;
import com.restfb.FacebookClient;
import com.restfb.Parameter;
import com.restfb.exception.FacebookException;
import com.restfb.types.FacebookType;
import com.restfb.types.Page;
import com.restfb.types.User;

/**
*
* @author dsfounis
*/
public class FacebookConnector {

/* Variables */
private final String pageAccessToken = "GET_THIS_FROM_THE_INSTRUCTIONS_ABOVE";
private final String pageID = "THIS_TOO";
private FacebookClient fbClient;
private User myuser = null; //Store references to your user and page
private Page mypage = null; //for later use. In this answer's context, these
//references are useless.
private int counter = 0;

public FacebookConnector() {
try {

fbClient = new DefaultFacebookClient(pageAccessToken);
myuser = fbClient.fetchObject("me", User.class);
mypage = fbClient.fetchObject(pageID, Page.class);
counter = 0;
} catch (FacebookException ex) { //So that you can see what went wrong
ex.printStackTrace(System.err); //in case you did anything incorrectly
}
}

public void makeTestPost() {
fbClient.publish(pageID + "/feed", FacebookType.class, Parameter.with("message", Integer.toString(counter) + ": Hello, facebook World!"));
counter++;
}

}

结果:

调用 makeTestPost() 几次后: enter image description here


一些注意事项:

我很确定 pageID 也可以采用您的页面名称的 String,您可以在访问页面时在页面链接中看到它。 http://facebook.com/mypagename,因此您可以将 pageID 编号替换为 "mypagename"

另一件事:如果之前的帖子与您现在尝试发布的帖子完全相同,则上面使用的 publish() 方法将失败,这可能是一种反垃圾邮件措施。这就是我实现 counter 的原因,这样我就可以正确地测试它。除了该限制外,makeTestPost() 还通过了 Monkey Test .

最后,我的做法可能不是最佳的或简单的,但像您一样,我花了数小时迷失在有关 RestFB 的不完整文档和信息中。

关于java - restFB post as page step by step 工作示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18982623/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com