【问题标题】:Java: Flickr OAuth Signature InvalidJava:Flickr OAuth 签名无效
【发布时间】:2014-12-10 19:08:14
【问题描述】:

所以我构建了一个应用程序,允许用户登录并将他们的 Flickr 帐户链接到我的应用程序,它可以很好地登录并将 AccessToken 存储在我的数据库中,以便用户避免每次登录时都链接 Flickr。 我有这个代码:

 OAuthService service = new ServiceBuilder()
                .provider(FlickrApi.class)
                .apiKey("apiKey")
                .apiSecret("apiSecret")
                .build();
        Token flickReq = service.getRequestToken();
        String authUrl = service.getAuthorizationUrl(flickReq);
        try{
        MSConnection msc = new MSConnection();
        Token accessToken = msc.getToken(userId_acc); // This gets AccessToken from database.
        OAuthRequest req = new OAuthRequest(Verb.POST, "https://api.flickr.com/services/rest/");
        req.addQuerystringParameter("method", "flickr.test.login");
        service.signRequest(accessToken, req);
        Response resp = req.send();
        System.out.println(resp.getBody());

作为回应,我得到: oauth_problem=signature_invalid

我做错了什么?

【问题讨论】:

    标签: java flickr


    【解决方案1】:

    解决了问题,事实证明:当您使用存储的 AccessToken 和 Secret 生成 Token 时 - Secret 不是 API 密钥,它是您获得的 accesstoken 密钥:

    Token accessToken = service.getAccessToken(flickReq, v); // Original accessToken you get from Flickr and users entered code.
    
    String tokenSecret = accessToken.getSecret();
    

    因此,您为用户存储这两个变量,然后每当您想要验证用户 Flickr 详细信息时,无需再次授权并输入代码 - 您只需使用:accessToken + tokenSecret

    Token tok = new Token(getToken(userId_acc), getSecret(userId_acc));
    

    然后你只需签署请求并将其发送出去。

    OAuthRequest req = new OAuthRequest(Verb.POST, "https://api.flickr.com/services/rest/");
    req.addQuerystringParameter("method", "flickr.test.login");
    service.signRequest(tok, req);
    Response resp = req.send();
    

    就是这样,希望这可以为遇到此问题的人节省一些时间,显然 Flickr API 文档并没有很好地解释 Java 方面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多