0
アクセストークンを識別するユーザー宛のすべてのメッセージを取得する必要があります。これは、他のユーザーが自分の投稿に行ったすべてのコメント、アルバムのコメントを取得することです。また会話で受け取ったメッセージも表示されます。すべての会話を取得するときに「拡張アクセス許可が必要です:read_mailbox」
私は次のように行っている:私はグラフAPIエクスプローラツールを通じてアクセストークンを取得している
private Stream<CommentEntity> getAllCommentsFromConversationsAfterThan(FacebookClient facebookClient, Date startDate, User user) {
Connection<Conversation> conversations = facebookClient.fetchConnection("me/conversations", Conversation.class);
return StreamUtils.asStream(conversations.iterator())
.flatMap(List::stream)
.flatMap(conversation -> {
Connection<Message> messages = facebookClient.fetchConnection(
conversation.getId() + "/messages", Message.class, Parameter.with("fields", "message,created_time,from,id"));
return StreamUtils.asStream(messages.iterator());
})
.flatMap(List::stream)
.filter(message
-> !message.getFrom().getId().equals(user.getId())
&& (startDate != null ? message.getCreatedTime().after(startDate) : true))
.map(message -> facebookMessageMapper.facebookMessageToCommentEntity(message));
}
:
@Override
public List<CommentEntity> getCommentsLaterThan(Date startDate, String accessToken) {
List<CommentEntity> comments = new ArrayList<CommentEntity>();
try {
logger.debug("Call Facebook API for accessToken : " + accessToken + " on thread: " + Thread.currentThread().getName());
FacebookClient facebookClient = new DefaultFacebookClient(accessToken, Version.VERSION_2_8);
// Get Information about access token owner
User user = facebookClient.fetchObject("me", User.class);
StreamUtils.concat(
StreamUtils.concat(
getAllCommentsFromPostsAfterThan(facebookClient, startDate, user),
getAllCommentsFromAlbumsAfterThan(facebookClient, startDate, user)
)
.map(comment -> facebookCommentMapper.facebookCommentToCommentEntity(comment)),
getAllCommentsFromConversationsAfterThan(facebookClient, startDate, user)
)
.collect(Collectors.toList());
logger.debug("Total Facebook comments : " + comments.size());
} catch (FacebookOAuthException e) {
logger.error(e.getErrorMessage());
throw new InvalidAccessTokenException(SocialMediaTypeEnum.FACEBOOK, accessToken);
} catch (Exception e) {
throw new GetCommentsProcessException(e);
}
return comments;
}
getAllCommentsFromConversationsAfterThan方法を説明します。すべての権限を与える。そして、このエラーメッセージで例外が発生します。
(# 298) Requires extended permission: read_mailbox "
このドキュメントには、read_mailbox権限が廃止されていると記載されています。
私はバージョン2.8を使用しています。会話からメッセージを得ることは可能ですか?事前
いいえ、ユーザーのプライベートメッセージへのAPIアクセスはこれ以上ありません。 – CBroe