2014-05-07 26 views
1

我試圖從社區活動中的某個部分獲取所有活動。如何從一節中獲取ActivityNode?

首先,我遍歷所有活動:

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上和盛大獲得重新登錄。

是否有另一種/更好的方式從社區活動的某個部分獲取活動?

BTW:我使用了SBT的倒數第二個版本:1.0.0.20140125-1133

+1

您是否使用Session Store用於oAuth或者您使用的是數據庫?它不應該放鬆會議。也許報告那個缺陷? –

+1

我使用Portal的CredentialVault編寫了自己的商店。我會仔細研究一下,看看出了什麼問題。如果它是SBT中的東西,我會在Github上報告它。 – magnetronnie

回答

1

試試這個辦法...

可以擴展基地 「延伸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應該是相同的。

+0

然後,您將添加一個新的函數,如上所示的activityservice –

+0

因此,如果我理解正確,有一個不同的API URL(/ activities/service/atom2/descendants)來獲取節的節點?這是記錄在某處嗎? – magnetronnie

+1

如果您登錄到該服務,您會看到右側的部分,選擇一個部分,然後單擊部分底部的供稿圖標 –

相關問題