我们使用SBT作为代理,通过OAuth2访问Smartcloud内容。我们需要使用Java在服务器端检索登录用户的配置文件详细信息。为此,我们调用new com.ibm.sbt.services.client.smartcloud.profiles.ProfileService("smartcloudOA2").getMyProfile()
。在我意识到返回的配置文件对象包含不推荐使用的用户配置文件详细信息之前,该方法运行良好。
当我尝试使用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]
managed-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.SmartCloudOAuth2Endpoint
与com.ibm.sbt.services.client.connections.profiles.ProfileService
兼容吗?
使用SBT Java API在服务器端检索Smartcloud用户配置文件信息的最佳方式是什么?
发布于 2015-03-13 16:37:10
感谢Paul解决了这个问题--我们再也不会遇到这个例外了。但是我们仍然无法获取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],以便获取我的个人资料提要。当我们仔细查看response时,我们看到返回的不是配置文件提要,而是smartcloud登录页面的html。当我们使用sbt proxy通过我们的网络应用程序smth调用相同的url时,比如:https://localhost/ctx-root/service/proxy/smartcloudOA2/profiles/oauth/atom/profile.do?userid=[myid],我们得到的是相同的登录页面,而不是个人资料。你能不能再看一看这个问题?
发布于 2015-02-14 05:27:40
当传递到namedurlpart时,问题出现在getMyUserId中。我合并成了一个修复者。
NamedUrlPart commonPart = new NamedUrlPart("connections",ProfilesConstants.COMMON);
String peopleApiUrl = ProfileUrls.MY_USER_ID.format(this,commonPart);
它将在我们的下一个构建中,您可以从github中提取更改。
https://stackoverflow.com/questions/28457368
复制相似问题