1

コミュニティ アクティビティのセクションからすべてのアクティビティを取得しようとしています。

まず、すべてのアクティビティをループします。

ActivityList allActivities = service.getAllActivities();
for(Activity activity : allActivities) {
    if("community_activity".equals(activity.getEntryType())) {
    ...

すべてのコミュニティ アクティビティについて、ActivityNodes をループします。

ActivityNodeList activityNodesFromActivity = service.getActivityNodes(activity.getActivityId());            
    for (ActivityNode activityNode : activityNodesFromActivity) {
    ...

ここまでは順調ですね。しかし、一部のアクティビティはセクションになる可能性があるため、それらをもう一度ループして「子」アクティビティを取得したいと考えています。

ActivityNodeList activityNodesFromSection = service.getActivityNodes(activityNode.getActivityId());

これらのリクエストに対して 403 エラーが発生するようになりました。

<error xmlns="http://www.ibm.com/xmlns/prod/sn">
    <code/>
    <message>
        Identifier: LCFED1E22083D5412BB4A4E5ABB1D26B10 Request denied
    </message>
    <displaymessage/>
    <errortype/>
    <trace>
        java.lang.Exception: Identifier: LCFED1E22083D5412BB4A4E5ABB1D26B10 Request denied
    </trace>
</error>

そのため、SBT は OAuth トークンを失い、SmartCloud とグランド アクセスに再度ログインする必要があります。

コミュニティ活動のセクションから活動を取得する別の/より良い方法はありますか?

ところで:私はSBTの最後の2番目のバージョンを使用しています:1.0.0.20140125-1133

4

1 に答える 1

1

このアプローチを試してください...

ベース「extends ActivityService」を拡張できます

/**
* Method to get Activity nodes from Section
* 
* @param includeSelf 
* @param nodeUuid
* @param sectionId
* @return ActivityNodeList
* @throws ActivityServiceException
*/
public ActivityNodeList getActivityNodesInSection(String nodeUuid, String sectionId boolean includeSelf) throws ActivityServiceException {

private String sectionUri = "/activities/service/atom2/descendants";

if (null == activityId ){
throw new ActivityServiceException(null, "Null activityId");
}

/**
 * Includes section node, if it's true
 */
String include = "no";
if(includeSelf){
   include = "yes";
}

try {
Map<String, String> params = new HashMap<String, String>();
params.put("nodeUuid", activityId);
params.put("includeSelf", include);
params.put("section", sectionId);


         return (ActivityNodeList) getEntities(sectionUri, params, new ActivityNodeFeedHandler(this));
} catch (Exception e) {
throw new ActivityServiceException(e);
}
}

次に、呼び出す関数-あなたの場合、nodeUuidとsectionidは同じでなければなりません。

于 2014-05-13T11:40:55.493 に答える