1

我正在尝试使用 Social Business Toolkit 通过 OAuth 访问 SmartCloud,但出现此错误。使用SmartCloudBasicEndpoint一切正常。

[4/4/14 12:01:56:236 CEST] 00000038 SBTProxy      I   URL computed from SBTProxy is https://apps.na.collabserv.com/communities/service/atom/oauth/communities/all
[4/4/14 12:01:56:556 CEST] 00000038               E com.ibm.sbt.security.authentication.oauth.consumer.OAuth1Handler _performOAuth1Dance Failed to get request token. requestUrl:https://apps.na.collabserv.com/manage/oauth/getRequestToken, authorizeUrl: https://apps.na.collabserv.com/manage/oauth/authorizeToken, accessUrl: https://apps.na.collabserv.com/manage/oauth/getAccessToken, callback: null, truncated key:a919....1b25, truncated secret:9054....687d. OAuth callback is empty, please check with your application vendor to ensure a callback is not required.

                                 com.ibm.sbt.security.authentication.oauth.OAuthException: Internal error - getRequestToken failed Exception: <br>
    at com.ibm.sbt.security.authentication.oauth.consumer.OAuth1Handler.getRequestTokenFromServer(OAuth1Handler.java:169)
    at com.ibm.sbt.security.authentication.oauth.consumer.OAuth1Handler._performOAuth1Dance(OAuth1Handler.java:656)
    at com.ibm.sbt.security.authentication.oauth.consumer.OAuth1Handler.performOAuth1Dance(OAuth1Handler.java:649)
    at com.ibm.sbt.security.authentication.oauth.consumer.OAuth1Handler._acquireToken(OAuth1Handler.java:625)
    at com.ibm.sbt.security.authentication.oauth.consumer.OAuth1Handler.acquireToken(OAuth1Handler.java:580)
    at com.ibm.sbt.services.endpoints.OAuthEndpoint.authenticate(OAuthEndpoint.java:234)
    at com.ibm.sbt.services.client.ClientService.forceAuthentication(ClientService.java:281)
    at com.ibm.sbt.services.client.ClientService.processResponse(ClientService.java:1123)
    at com.ibm.sbt.services.client.ClientService._xhr(ClientService.java:1041)
    at com.ibm.sbt.services.client.ClientService.execRequest(ClientService.java:1006)
    at com.ibm.sbt.services.client.ClientService.xhr(ClientService.java:966)
    at com.ibm.sbt.services.client.ClientService.get(ClientService.java:842)
    at com.ibm.sbt.services.client.ClientService.get(ClientService.java:838)
    at com.ibm.sbt.services.client.base.BaseService.retrieveData(BaseService.java:352)
    at com.ibm.sbt.services.client.base.BaseService.retrieveData(BaseService.java:376)
    at com.ibm.sbt.services.client.base.BaseService.retrieveData(BaseService.java:327)
    at com.ibm.sbt.services.client.base.BaseService.getEntities(BaseService.java:187)
    at com.ibm.sbt.services.client.connections.communities.CommunityService.getPublicCommunities(CommunityService.java:164)
    at com.ibm.sbt.services.client.connections.communities.CommunityService.getPublicCommunities(CommunityService.java:146)
    at servlets.SmartCloudTestServlet.doGet(SmartCloudTestServlet.java:82)
    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:1224)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:774)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:456)
    at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:97)
    at com.ibm.sbt.util.SBTFilter.doFilter(SBTFilter.java:53)
    at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:195)
    at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:91)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:928)
    at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1025)
    at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3751)
    at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:304)
    at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:962)
    at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
    at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:195)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
    at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:276)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
    at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
    at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
    at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
    at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
    at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
    at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1690)
Caused by: java.lang.NullPointerException
    at java.net.URLEncoder.encode(URLEncoder.java:197)
    at com.ibm.sbt.security.authentication.oauth.consumer.OAuth1Handler.getRequestTokenFromServer(OAuth1Handler.java:156)
    ... 51 more

[4/4/14 12:01:56:560 CEST] 00000038 SystemOut     O Problem Occurred while fetching public communities: Problem occurred while fetching public communities

这是我到目前为止所做的:

  • 创建一个新的 Servlet 应用程序。
  • 我正在使用RuntimeFactoryStandalone.
  • managed-beans.xml将and sbt.properties(均来自示例应用程序)添加到/WEB-INF/.
  • 我在 WebSphere Application Server 上运行应用程序。(我还在 WebSphere Portal 上的 Portlet 中尝试了相同的代码)
  • 将 SmartCloud 密钥、密钥和 appId 添加到属性文件中。

我正在使用这段代码:

try {
    CommunityService svc = new CommunityService("smartcloud");
    CommunityList communities = svc.getPublicCommunities();

    System.out.println("Listing public communities , Total communities found : " + communities.getTotalResults());
} catch (Throwable e) {
    System.out.println("Problem Occurred while fetching public communities: " + e.getMessage());
    //e.printStackTrace();
}

如果我手动使用SmartCloudOAuthEndpoint.

我在这里忘记了什么吗?


更新:

我的手动端点:

SmartCloudOAuthEndpoint endpoint = new SmartCloudOAuthEndpoint();
endpoint.setUrl("https://apps.na.collabserv.com");
endpoint.setConsumerKey("a91..----REMOVED FOR STACKOVERFLOW----..");
endpoint.setConsumerSecret("905..----REMOVED FOR STACKOVERFLOW----..");
endpoint.setRequestTokenURL("https://apps.na.collabserv.com/manage/oauth/getRequestToken");
endpoint.setAuthorizationURL("https://apps.na.collabserv.com/manage/oauth/authorizeToken");
endpoint.setAccessTokenURL("https://apps.na.collabserv.com/manage/oauth/getAccessToken");
endpoint.setAppId("RonnieTest");
endpoint.setApiVersion("apiVersion");
//endpoint.setHttpProxy("localhost:8888");
endpoint.setForceTrustSSLCertificate(true);
endpoint.setSignatureMethod("PLAINTEXT");
endpoint.setCredentialStore("SmartCloudStore");
endpoint.setAuthenticationService("communities/service/atom/communities/my");

我在 SmartCloud 中使用这个内部应用程序: 在此处输入图像描述

4

1 回答 1

0

我解决了。我没有通过ServletRequestServletResponse我的Context. 事实证明,getCallbackUrl(Context context)inOAuthHandler是第一个实际需要请求来构建回调 URL 的方法。

于 2014-04-09T13:07:57.523 回答