2015-02-11 58 views
1

我們使用SBT作爲通過OAuth2訪問Smartcloud內容的代理。 我們需要使用Java在服務器端檢索已登錄用戶的配置文件詳細信息。爲此,我們致電new com.ibm.sbt.services.client.smartcloud.profiles.ProfileService("smartcloudOA2").getMyProfile()。這工作正常,直到我意識到返回的配置文件對象包含不贊成的用戶配置文件詳細信息。使用IBMSBT訪問Smartcloud用戶配置文件

當我嘗試使用new com.ibm.sbt.services.client.connections.profiles.ProfileService("smartcloudOA2").getMyProfile()獲得簡介細節我得到以下異常:

java.lang.IllegalArgumentException: Missing parameter: connections 
    at com.ibm.sbt.services.client.base.URLPattern.checkNoMissingParameters(URLPattern.java:67) 
    at com.ibm.sbt.services.client.base.URLPattern.format(URLPattern.java:58) 
    at com.ibm.sbt.services.client.base.URLBuilder.format(URLBuilder.java:82) 
    at com.ibm.sbt.services.client.connections.profiles.ProfileUrls.format(ProfileUrls.java:69) 
    at com.ibm.sbt.services.client.connections.profiles.ProfileService.getMyUserId(ProfileService.java:879) 
    at com.ibm.sbt.services.client.connections.profiles.ProfileService.getMyProfile(ProfileService.java:894) 
    at de.timetoact.xcc.conf.CloudServlet.doGet(CloudServlet.java:53) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:575) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:668) 
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1274) 
    at [internal classes] 
    at com.ibm.sbt.util.SBTFilter.doFilter(SBTFilter.java:53) 
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:194) 
    at [internal classes] 

這是管理-beans.xml文件的樣子:

... 
<!-- Default Environment --> 
    <managed-bean> 
     <managed-bean-name>defaultEnvironment</managed-bean-name> 
     <managed-bean-class>com.ibm.sbt.jslibrary.SBTEnvironment 
     </managed-bean-class> 
     <managed-bean-scope>application</managed-bean-scope> 
     <managed-property> 
      <property-name>endpoints</property-name> 
      <value>smartcloudOA2</value> 
     </managed-property> 
    </managed-bean> 
    <managed-bean> 
     <managed-bean-name>smartcloudOA2</managed-bean-name> 
     <managed-bean-class>com.ibm.sbt.services.endpoints.SmartCloudOAuth2Endpoint 
     </managed-bean-class> 
     <managed-bean-scope>session</managed-bean-scope> 
     <managed-property> 
      <property-name>url</property-name> 
      <value>%{smartcloud.url}</value> 
     </managed-property> 
     <managed-property> 
      <property-name>appName</property-name> 
      <value>%{smartcloud.appName}</value> 
     </managed-property> 
     <managed-property> 
      <property-name>clientID</property-name> 
      <value>%{smartcloud.clientID}</value> 
     </managed-property> 
     <managed-property> 
      <property-name>clientSecret</property-name> 
      <value>%{smartcloud.clientSecret} 
      </value> 
     </managed-property> 
     <managed-property> 
      <property-name>forceTrustSSLCertificate</property-name> 
      <value>true</value> 
     </managed-property> 
     <managed-property> 
      <property-name>credentialStore</property-name> 
      <value>CredStore</value> 
     </managed-property> 
    </managed-bean> 
... 

com.ibm.sbt.services.endpoints.SmartCloudOAuth2Endpointcom.ibm.sbt.services.client.connections.profiles.ProfileService兼容?

什麼是使用SBT Java API在服務器端檢索Smartcloud用戶配置文件信息的最佳方法?

+0

是的,它是兼容的。我們正在查看該條目。謝謝Paul – 2015-02-12 12:24:27

回答

0

問題出在getMyUserId傳入namedurlpart時。我已經在Fix中合併了。

NamedUrlPart commonPart = new NamedUrlPart("connections",ProfilesConstants.COMMON); 
     String peopleApiUrl = ProfileUrls.MY_USER_ID.format(this,commonPart); 

它會在我們的下一個版本中,您可以從github中獲得更改。

+1

上述Fix對於例外情況非常有用。不幸的是,doies尚未修復配置文件檢索,調用getMypRofile仍然返回null。在進一步調查期間,我們看到SBT發佈了一個請求,但SmartCloud使用登錄頁面進行回覆,而不是預期的配置文件(請參閱下面的文章)。 – 2015-03-30 12:07:09

1

感謝保羅解決這個問題 - 我們不再有這種例外。 但我們仍然無法獲取Profile對象 - 當我們調用com.ibm.sbt.services.client.connections.profiles.ProfileService("smartcloudOA2").getMyProfile()時,它將返回null。 在調試過程中,我們看到sbt在內部調用https://apps.na.collabserv.com/profiles/oauth/atom/profile.do?userid=[myid]以獲取我的配置文件提要。 當我們仔細查看回應時,我們發現配置文件饋送不會返回,而是smartcloud登錄頁面的html。 當我們使用sbt代理通過我們的網絡應用程序調用相同的網址時,如:https://localhost/ctx-root/service/proxy/smartcloudOA2/profiles/oauth/atom/profile.do?userid=[myid],我們獲得相同的登錄頁面而不是配置文件提要。 你能再看看這個問題嗎?