划线+;兴=>;无效的OAuth签名

划线+;兴=>;无效的OAuth签名,oauth,scribe,xing,Oauth,Scribe,Xing,我试着用scribe和XING一起使用,我总是得到以下答案: Can't extract token and secret from this: '{"message":"Invalid OAuth signature","error_name":"INVALID_OAUTH_SIGNATURE"}' 我有一个正常的登录过程,返回一个oauth_令牌和一个oauth_验证器,并尝试用明文签名更改默认选择的HMACSha1信号,但我总是会得到上面提到的结果 你知道为什么会这样吗 在上述步骤中,使

我试着用scribe和XING一起使用,我总是得到以下答案:

Can't extract token and secret from this: '{"message":"Invalid OAuth signature","error_name":"INVALID_OAUTH_SIGNATURE"}'
我有一个正常的登录过程,返回一个
oauth_令牌
和一个
oauth_验证器
,并尝试用
明文
签名更改默认选择的
HMACSha1
信号,但我总是会得到上面提到的结果

你知道为什么会这样吗

在上述步骤中,使用scribe的默认
DefaultApi10a
XingApi
总是失败

编辑-代码

// Creating the service
// callback is needed to stop redirecting in the webview
OAuthService service = new ServiceBuilder()
            .provider(XingApi.class)
            .apiKey(apiKey)
            .apiSecret(apiSecret)
            .callback("http://www.xing.com")
            .build();
步骤1:获取请求令牌+身份验证url

步骤2:在webview中加载身份验证url+检查重定向url并基于回调取消重定向

例如,重定向url如下所示:
http://www.xing.com?oauth_token=a2191ab84c9e0f85cf0c&oauth_verifier=4978

步骤3:从返回的url中提取oauth_令牌+oauth_验证器

步骤4:获取访问令牌=>此操作失败

删除:


Token requestToken=新令牌(oauthToken,oauthVerifier);//重用上面的请求令牌会导致xing的请求令牌应答无效

步骤4中的行

您必须保留请求令牌以使用它和来自Xing的验证器(4位PIN)检索访问令牌

编辑-添加代码:

OAuth10aService service = new ServiceBuilder()
    .apiKey("44a4f9c1a9daa88f4da2")
    .apiSecret("2fc8ca373dab772acc4de7ce22718f8fced6919c")
    .callback("https://redirect.example.com")
    .build(XingApi.instance());

final Token requestToken = service.getRequestToken();

System.out.println(service.getAuthorizationUrl(requestToken));
System.out.println("Paste the verifier here");
System.out.print(">>");
Scanner in = new Scanner(System.in);
Verifier verifier = new Verifier(in.nextLine());
System.out.println();
in.close();

// Trade the Request Token and Verfier for the Access Token
Token accessToken = service.getAccessToken(requestToken, verifier);
System.out.println("Got the Access Token! " + accessToken);

刚刚用
XingExample
对它进行了测试-它可以工作。我添加了一些代码,你看到有什么问题吗?什么是
mService
?只是忘记重命名这个变量,这是服务变量当我使用'service.getRequestToken()'时,我从xing那里得到了'invalid request token'的答案。它必须是一样的吗?明天我将尝试使用同一个实例…
Token requestToken=new Token(oauthToken,oauthVerifier)
是错误的,请删除它。事实上,我已经使用我的代码很多年了,从来没有看到过这个错误,Xing是我在我的应用程序中添加的第14个网络。。。重用原始请求令牌解决了这个问题,现在我只需检查其他服务是否也以这种方式工作。谢谢
String oauthToken = ...; // a2191ab84c9e0f85cf0c in the example
String oauthVerifier = ...; // 4978 in the example
Token requestToken = new Token(oauthToken, oauthVerifier); // reusing the request token from above results in invalid request token answer from xing!
Verifier v = new Verifier(oauthVerifier);
Token accessToken = service.getAccessToken(requestToken, v);
OAuth10aService service = new ServiceBuilder()
    .apiKey("44a4f9c1a9daa88f4da2")
    .apiSecret("2fc8ca373dab772acc4de7ce22718f8fced6919c")
    .callback("https://redirect.example.com")
    .build(XingApi.instance());

final Token requestToken = service.getRequestToken();

System.out.println(service.getAuthorizationUrl(requestToken));
System.out.println("Paste the verifier here");
System.out.print(">>");
Scanner in = new Scanner(System.in);
Verifier verifier = new Verifier(in.nextLine());
System.out.println();
in.close();

// Trade the Request Token and Verfier for the Access Token
Token accessToken = service.getAccessToken(requestToken, verifier);
System.out.println("Got the Access Token! " + accessToken);