代码之家  ›  专栏  ›  技术社区  ›  prom85

Scribe+Xing=>无效的OAuth签名

  •  1
  • prom85  · 技术社区  · 10 年前

    我正在尝试将抄写员与XING一起使用,我总是得到以下答案:

    Can't extract token and secret from this: '{"message":"Invalid OAuth signature","error_name":"INVALID_OAUTH_SIGNATURE"}'
    

    我有一个有效的登录过程 oauth_token oauth_verifier 并尝试更改默认选择的 HMACSha1 用一个 PlainText 签名,但我总会得到上面提到的结果。。。

    关于为什么会发生这种情况有什么想法吗?

    使用默认值 DefaultApi10a XingApi 从划线器总是在上述步骤失败。。。

    EDIT-代码

    // 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

    RequestToken requestToken = service.getRequestToken();
    String authUrl = service.getAuthorizationUrl(requestToken );
    

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

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

    步骤3:从返回的url中提取oauth_token+oauth_verifier

    String oauthToken = ...; // a2191ab84c9e0f85cf0c in the example
    String oauthVerifier = ...; // 4978 in the example
    

    步骤4:获取访问令牌=>这失败了

    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);
    
    1 回复  |  直到 10 年前
        1
  •  1
  •   Michal Foksa    10 年前

    删除:

    Token requestToken = new Token(oauthToken, oauthVerifier); // reusing the request token from above results in invalid request token answer from xing!

    第4步中的行。

    您必须保留请求令牌,才能使用它和Xing的验证器(4位PIN)检索访问令牌。

    EDIT-添加代码:

    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);