我在我的智慧结束,我似乎无法发布消息作为页面,我可以作为管理员用户发布到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();
Run Code Online (Sandbox Code Playgroud)
我相信上面的代码获得了App Access令牌,但是我收到以下错误:
OAuthException: An active access token must be used to query information about the current user.
Run Code Online (Sandbox Code Playgroud)
我有以下权限设置:
publish_actions, manage_pages, publish_stream
Run Code Online (Sandbox Code Playgroud)
如果我将代码修改为:
FacebookType publishMessageResponse = facebookClient.publish("MYAPPNAME/feed", FacebookType.class, Parameter.with("message", fbMessage));
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
OAuthException: (#200) The user hasn't authorized the application to perform this action.
Run Code Online (Sandbox Code Playgroud)
我已经阅读了很多这方面的内容,但看不到木头的树木,有人可以解释我哪里出错了,以及如何解决这个噩梦.
任何帮助将非常感激 :-)
facebook API 是否允许搜索帐户中的个人资料,网络,雇主,学校信息?
我试图在Facebook页面的墙上张贴.我可以使用App Access令牌在用户墙上发布.
我通过扩展DefaultFacebookClient获得了App Access Token
public class ConnectionService extends DefaultFacebookClient{
public ConnectionService(String appId, String appSecret) {
AccessToken accessToken = this.obtainAppAccessToken(appId, appSecret);
this.accessToken = accessToken.getAccessToken();
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我可以使用appID和appSecret发布到用户墙.但当我试图发布到Page Wall时,我收到"用户未授权应用程序执行此操作"的错误
有人可以建议吗?
我正在使用restfb以这种方式获取Facebook页面每个帖子的一些帖子和每条评论:
FacebookClient facebookClient = new DefaultFacebookClient(MY_ACCESS_TOKEN);
Connection<Post> pagePosts = facebookClient.fetchConnection("iPhone.page/feed", Post.class);
for (List<Post> posts : pagePosts)
for (Post post : posts){
for(Comment comment: post.getComments().getData()){
//get number of likes of comment
}
String message = post.getMessage();
String id = post.getId();
long timestamp = post.getCreatedTime().getTime()/1000;
//store info
}
Run Code Online (Sandbox Code Playgroud)
当它取一个像后我的问题,新生儿此.
它有140条评论,但该toString()方法给了我:
Post[actions=[...] application=null attribution=null caption=techblr.com comments=Comments[count=157 data=[]] createdTime=Wed Feb 27 14:41:58 CET 2013 ....]
Run Code Online (Sandbox Code Playgroud)
评论的json部分是:
comments=Comments[count=157 data=[]]
count=157
Run Code Online (Sandbox Code Playgroud)
但是,如果你现在继续这个帖子,那就说145 ......而且没有data!
那可能是什么问题?为什么它给我不同的真实数据呢?
我最近开始研究facebook的手动登录流程.并按照此博客获取访问令牌并使用rest fb访问用户信息.
下面是提到的代码片段 - 获取单个对象:
FacebookClient facebookClient = new DefaultFacebookClient(ACCESS_TOKEN, APP_SECRET);
User user = facebookClient.fetchObject("me", User.class);
Run Code Online (Sandbox Code Playgroud)
我能够成功地得到用户的名字,姓氏和名字,但它返回null的email(user.getEmail();).
我的Facebook应用程序具有以下默认权限:

任何人帮助我如何访问用户电子邮件?
UPDATE
我一直在尝试graph-api探险家,看看我得到了什么email
它说Field is empty or disallowed by the access token.我该怎么做才能解决这个问题?
我是java和restfb的新手.我想尝试喜欢,不像用户和页面帖子那样评论,但是在restfb的文档中找不到太多信息.any1可以帮助我.我完成了所有的oauth过程,甚至可以拉出帖子.谢谢
我正在开发一个使用Facebook Graph Api来收集有关公共帖子的信息的项目.当更改发布到此帖子时,需要实时更新此数据.我已经看到使用回调网址的实时更新机制https://developers.facebook.com/docs/graph-api/reference/app/subscriptions/和https://developers.facebook.com/docs/graph-api/real-time-updates / ..但我不知道在java中这样做.请有人帮我用一个例子.
java facebook-java-api restfb facebook-graph-api facebook-java-sdk