1

我为 IBM Connections 活动流配置了嵌入式体验小工具。似乎 OAuth 舞蹈从未成功,只是让我回到 OAuth 舞蹈的开始(提示授权)。

我看到这样的错误:

[2/25/14 7:17:45:197 EST] 000000c2 BasicOAuth2Me 3   JSONException parsing response
                                 org.apache.commons.json.JSONException: Error occurred during input read.
Caused by: java.io.IOException: Unexpected character '<' on line 1, column 1
    at org.apache.commons.json.internal.Tokenizer.next(Tokenizer.java:185)
    at org.apache.commons.json.internal.Parser.parse(Parser.java:114)
    at org.apache.commons.json.internal.Parser.parse(Parser.java:85)
    at org.apache.commons.json.JSONObject.<init>(JSONObject.java:128)
    at org.json.JSONObject.<init>(JSONObject.java:41)

...这可能表明 XML 是从某些东西而不是 JSON 返回的。

我也看到POST /connections/opensocial/gadgets/makeRequest HTTP/1.1 回归:

HTTP/1.1 200 OK
Date: Tue, 25 Feb 2014 12:54:12 GMT
Server: IBM_HTTP_Server
X-Powered-By: Servlet/3.0
X-LConn-Auth: true
X-UA-Compatible: IE=EmulateIE7
Cache-Control: no-cache
Expires: Tue, 25 Feb 2014 12:54:12 GMT
Pragma: no-cache
Content-Disposition: attachment;filename=p.txt
Content-Length: 1029
Content-Type: application/json;charset=UTF-8
Content-Language: en-US

throw 1; < 'invalid javascript' > {"http://appfusions.demos.ibm.com:2990/jira/rest/api/2/issue/DEMO-12/transitions?expand=transitions.fields":{"rc":200,"body":"","oauthApprovalUrl":"http://appfusions.demos.ibm.com:2990/jira/plugins/servlet/af/oauth/authorize?client_id=8821f0cfd9264c4ed08b00861016886c&realGadgetUri=http%3A%2F%2Fappfusions.demos.ibm.com%3A2990%2Fjira%2Frest%2Fgadgets%2F1.0%2Fg%2Fcom.appfusions.jira.connections.jira-immersive-for-connections%3Aconnections-gadgets%2Fgadgets%2Fjira-ee.xml&redirect_uri=https%3A%2F%2Fconnectionsww.demos.ibm.com%2Fconnections%2Fopensocial%2Fgadgets%2Foauth2callback&response_type=code&state=WIn_8DLhmOeRc8aIYomi0j2XGIAAd7Ke3j2E4y9SbXpD6aZcmU_sKbJpOh4CEuJKr1NLEEsm8xAB-gzYz9laubsztcW-I-YC8gfq67kGbW2wxYhFh6PCaqEZgAhzD7sfRGsj_bBLykeVpSCRZCI7h8pbO9UbtiBfKDKUDwyqm2t35GWi0DV3KcWZlnKso97-z8Xlzj5AysY5ifWux0nJwHCLJ70Fq4wV738SQ5ZDExqSQkaiGY-w7NlJRHRCVP0wJzIEWP2fsSkNMbN8ui4ULLD1kR0w4T_VlBYS1QXbjvXJ6XUwEc7xhusC2ixvDzhBjjLOmbrwqOdMQnFRrxilX--Q9mI","DataHash":"qgeopmcf02p09qc016cepu22fo"}}

这是完整的trace.log ——我目前正在使用这些包进行日志记录:

*=info: 
com.ibm.social.pim.resource.*=all: 
com.ibm.lconn.homepage.services.widget.*=all: 
com.ibm.lconn.news.*=all: 
com.ibm.lconn.events.*=all: 
com.ibm.lotus.search.engine.*=all: 
com.ibm.lotus.search.index.*=all: 
com.ibm.lconn.mailin.*=all: 
com.ibm.lotus.connections.core.notify.*=all: 
com.ibm.lconn.scheduler.*=all:
org.apache.shindig.*=all

我很想知道一种调试的好方法JSONException以及更多关于makeRequestPOST 的内容。

非常感谢任何有关如何进一步调试的线索。

更新

在 Paul 的日志记录建议之后,我更新了trace.log,现在我在存储 OAuth 信息时看到了异常:

[2/27/14 7:16:17:062 EST] 0000014e RetryConnecti 3   Exception caught during attempt
                                 org.springframework.dao.DataIntegrityViolationException: SqlMapClient operation; SQL [];   
--- The error occurred in resources/news/oauth/OAuth2TokenSQL.xml.  
--- The error occurred while applying a parameter map.  
--- Check the insert-OAUTH2_TOKEN-InlineParameterMap.  
--- Check the statement (update failed).  
--- Cause: com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Assignment of a NULL value to a NOT NULL column "TBSPACEID=5, TABLEID=14, COLNO=4" is not allowed.. SQLCODE=-407, SQLSTATE=23502, DRIVER=4.13.80; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in resources/news/oauth/OAuth2TokenSQL.xml.  
--- The error occurred while applying a parameter map.  
--- Check the insert-OAUTH2_TOKEN-InlineParameterMap.  
--- Check the statement (update failed).  
--- Cause: com.ibm.db2.jcc.am.SqlIntegrityConstraintViolationException: Assignment of a NULL value to a NOT NULL column "TBSPACEID=5, TABLEID=14, COLNO=4" is not allowed.. SQLCODE=-407, SQLSTATE=23502, DRIVER=4.13.80
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:228)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.execute(SqlMapClientTemplate.java:212)
    at org.springframework.orm.ibatis.SqlMapClientTemplate.insert(SqlMapClientTemplate.java:397)
    at com.ibm.lconn.news.data.dao.impl.ibatis.CrudDao.insert(CrudDao.java:394)
    at com.ibm.lconn.news.data.dao.impl.ibatis.oauth.OAuth2TokenDao.insert(OAuth2TokenDao.java:61)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
    at java.lang.reflect.Method.invoke(Method.java:611)

从我所看到的来看,OAuth 提供者似乎正在正确地提供 OAuth 令牌——也在 trace.log

4

1 回答 1

0

我已经安装tcpflow在 IBM Connections 机器上。使用...跟踪 IBM Connections 机器上的服务器端 OAuth 流

root$ tcpflow -p -c -i eth0 port 2990 | grep -oE '(GET|POST|HEAD) .* HTTP/1.[01]|Host: .*' > cnx-outgoing-2990.log

当 IBM Connections POST 到 access_token URL 时,我在 OAuth 提供程序上发现了 404 错误——将专注于这一点:)

于 2014-02-26T15:13:50.493 回答