0

GAE アプリケーションと Connections4 テスト環境の間の OAuth2.0 フローをトラブルシューティングしています。Connections サーバーでトレースを有効にすると、次の行が表示されます。

{_status: 1 _attributeList: {{name: request_type type: urn:ibm:names:oauth:request values: [access_token]},{name: client_id type: urn:ibm:names:oauth:param values: [socialdms4g]},{name: callback_uri type: urn:ibm:names:query:param values: [https://eog-fire-ice.appspot.com/socialdms]},{name: client_id type: urn:ibm:names:query:param values: [socialdms4g]},{name: code type: urn:ibm:names:query:param values: [Pb2JtuOb1UkgPyV6aT1LflZ12B6kL1]},{name: client_secret type: urn:ibm:names:query:param values: [REMOVED]},{name: grant_type type: urn:ibm:names:query:param values: [authorization_code]}} _cause: com.ibm.oauth.core.api.error.oauth20.OAuth20MissingParameterException: A required runtime parameter was missing: code}
[12-12-12 16:15:08:680 CET] 000000e8 CachedDBToken 3   processing exception with OAuthResult: invalid_request
[12-12-12 16:15:08:680 CET] 000000e8 CachedDBToken <  handleResultException Exit
                             {_status: 1 _attributeList: {{name: request_type type: urn:ibm:names:oauth:request values: [access_token]},{name: client_id type: urn:ibm:names:oauth:param values: [socialdms4g]},{name: callback_uri type: urn:ibm:names:query:param values: [https://eog-fire-ice.appspot.com/socialdms]},{name: client_id type: urn:ibm:names:query:param values: [socialdms4g]},{name: code type: urn:ibm:names:query:param values: [Pb2JtuOb1UkgPyV6aT1LflZ12B6kL1]},{name: client_secret type: urn:ibm:names:query:param values: [REMOVED]},{name: grant_type type: urn:ibm:names:query:param values: [authorization_code]}} _cause: com.ibm.oauth.core.api.error.oauth20.OAuth20MissingParameterException: A required runtime parameter was missing: code}
[12-12-12 16:15:08:680 CET] 000000e8 OAuth20Endpoi <  processTokenRequest Exit

このシーケンスを呼び出すために使用される URL には、コード (および他のすべての) パラメーターが含まれています。

これの原因は何ですか?さらに良いのは、どうすればこれを修正できますか?

4

2 に答える 2

0

少なくとも、問題が何であるかは簡単にわかります:) com.ibm.oauth.core.api.error.oauth20.OAuth20MissingParameterException: 必要なランタイム・パラメーターが欠落していました: コード

コードは、アクセス トークンを取得するためにリクエストで送信する必要があるパラメーターの 1 つです。SDK の src コードを検索すると、OAuth2Handler.getAccessTokenForAuthorizedUser() で常に送信する必要があるようです。それは呼ばれていますか?

于 2012-12-14T01:43:35.113 に答える
0

@赤いボール

これが私たちが今日取り組んでいることです

redirectURL = "/oauth2/endpoint/connectionsProvider/authorize?response_type=code&_oauth_client_auto_authorize=true&client_id="+AppId+"&callback_uri="+CallbackUrl;

AppId と CallBackUrl はアプリケーション固有のものです。

callBackUrl サーブレットの doGet で、このヘルパー クラスを使用します。

com.ibm.sbt.security.authentication.oauth.consumer.OAuth2Handler

私たちはこのようにしました

OAuth2Handler oAuth2Handler = new OAuth2Handler();
logger.warning("WARNING Always trusting SSL certificate !!");
oAuth2Handler.setForceTrustSSLCertificate(true);
logger.fine("getting accesstoken...");
oAuth2Handler.setClient_uri(CallbackUrl);

oAuth2Handler.setConsumerKey(AppId);
oAuth2Handler.setAuthorization_code(code);
oAuth2Handler.setConsumerSecret(AppSecret);
oAuth2Handler.setAccessTokenURL(AccessTokenUrl);

logger.fine("getting token using GET...");
oAuth2Handler.getAccessTokenForAuthorizedUser();
String accessToken = oAuth2Handler.getAccessToken();
String expiresIn = oAuth2Handler.getExpiresIn()
String refreshToken = oAuth2Handler.getRefreshToken();
于 2015-07-19T06:52:56.107 に答える