Facebook Graph api通知发送抛出异常

时间:2012-09-12 08:16:27

标签: java facebook facebook-graph-api

我想从我的网络应用程序向我的Facebook好友发送通知。我用图api。这是我的代码,但抛出异常java.lang.IllegalArgumentException:参数'access_token'保留供RestFB使用 - 你不能自己指定。

    public void sendNotification(List<Long> mediaIds, String username){

    FacebookClient facebookClient = new DefaultFacebookClient(ACCESS_TOKEN);
    Connection<User> myFriends = facebookClient.fetchConnection(
            "me/friends", User.class);

    String app_access_token = facebookClient.obtainAppAccessToken(API_KEY, SECRET).getAccessToken();
    for (List<User> myFriend : myFriends)
        for (User user : myFriend) {
            for (int i = 0; i < mediaIds.size(); i++) {
                String link = "user/view_contest_media_fb.action?guest="
                    + username + "&contMediaId=" + mediaIds.get(i);
                facebookClient.publish(user.getId() + "/notifications",
                        FacebookType.class,
                        Parameter.with("template", "Notification text"),
                        Parameter.with("href", link),
                        Parameter.with("access_token", app_access_token));
            }
        }

}

3 个答案:

答案 0 :(得分:4)

不要将access_token添加为参数,请按以下方式更改:

facebookClient.publish(user.getId() + "/notifications**?access_token="+ACCESS_TOKEN**,
                    FacebookType.class,
                    Parameter.with("template", "Notification text"),
                    Parameter.with("href", link));

答案 1 :(得分:0)

只需从代码中删除访问令牌参数

评论此行//Parameter.with("access_token", app_access_token)); 然后再试一次

答案 2 :(得分:0)

我在尝试订阅Page webhooks时遇到了这个问题。我最终使用BatchRequestBuilder来指定请求正文。

BatchRequest postRequest = new BatchRequest.BatchRequestBuilder(pageId + "/subscribed_apps")
                    .method("POST")
                    .body(Parameter.with("access_token","the token")).build();

List<BatchResponse> batchResponses = fb.executeBatch(postRequest);