首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用IBMSBT访问Smartcloud用户配置文件

使用IBMSBT访问Smartcloud用户配置文件
EN

Stack Overflow用户
提问于 2015-02-11 22:54:51
回答 2查看 142关注 0票数 1

我们使用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()获取配置文件详细信息时,我得到以下异常:

代码语言:javascript
运行
复制
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如下所示:

代码语言:javascript
运行
复制
...
<!-- 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用户配置文件信息的最佳方式是什么?

EN

回答 2

Stack Overflow用户

发布于 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],我们得到的是相同的登录页面,而不是个人资料。你能不能再看一看这个问题?

票数 1
EN

Stack Overflow用户

发布于 2015-02-14 05:27:40

当传递到namedurlpart时,问题出现在getMyUserId中。我合并成了一个修复者。

代码语言:javascript
运行
复制
NamedUrlPart commonPart = new NamedUrlPart("connections",ProfilesConstants.COMMON);
        String peopleApiUrl = ProfileUrls.MY_USER_ID.format(this,commonPart);

它将在我们的下一个构建中,您可以从github中提取更改。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28457368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档