Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google GData Java 2腿OAuth签名验证失败_Oauth_Gdata_Oauth Provider_2 Legged - Fatal编程技术网

Google GData Java 2腿OAuth签名验证失败

Google GData Java 2腿OAuth签名验证失败,oauth,gdata,oauth-provider,2-legged,Oauth,Gdata,Oauth Provider,2 Legged,我的消费者代码如下: GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters(); oauthParameters.setOAuthConsumerKey(consumerKey); oauthParameters.setOAuthConsumerSecret(secretKey); oauthParameters.setOAuthNonce(nonce);

我的消费者代码如下:

        GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
        oauthParameters.setOAuthConsumerKey(consumerKey);
        oauthParameters.setOAuthConsumerSecret(secretKey);
        oauthParameters.setOAuthNonce(nonce);
        oauthParameters.setOAuthTimestamp(timestamp);
        oauthParameters.setOAuthSignatureMethod(signatureMethod);

        validateTimestampAndNonce(otimestamp, nonce);

        OAuthHmacSha1Signer signer = new OAuthHmacSha1Signer();
        String baseString = OAuthUtil.getSignatureBaseString(baseUrl,httpMethod, baseParameters);
        String signature = signer.getSignature(baseString, oauthParameters);

        return signature.equals(oauthParams.getOauthSignature())
GoogleOAuthParameters oauthParameters=新的GoogleOAuthParameters()

我的OAuth服务器端代码如下:

        GoogleOAuthParameters oauthParameters = new GoogleOAuthParameters();
        oauthParameters.setOAuthConsumerKey(consumerKey);
        oauthParameters.setOAuthConsumerSecret(secretKey);
        oauthParameters.setOAuthNonce(nonce);
        oauthParameters.setOAuthTimestamp(timestamp);
        oauthParameters.setOAuthSignatureMethod(signatureMethod);

        validateTimestampAndNonce(otimestamp, nonce);

        OAuthHmacSha1Signer signer = new OAuthHmacSha1Signer();
        String baseString = OAuthUtil.getSignatureBaseString(baseUrl,httpMethod, baseParameters);
        String signature = signer.getSignature(baseString, oauthParameters);

        return signature.equals(oauthParams.getOauthSignature())

上面的签名验证失败了,我不知道哪里出了问题。请帮忙

我找到了原因。OAuth 1.0a规范第9.1.2节定义签名基字符串包括请求绝对URL。因此,如果这在服务器端与在消费者端不同,那么签名验证将失败。因此,在我的案例中,在消费者端,我使用

127.0.0.1

对于请求URL的主机名和我使用的服务器端

本地主机

作为主机名,这是错误的。将使用者更改为使用localhost作为主机名后,我可以成功地进行签名验证