gpt4 book ai didi

Java:Flickr OAuth 签名无效

转载 作者:太空宇宙 更新时间:2023-11-04 06:21:03 27 4
gpt4 key购买 nike

所以我构建了一个应用程序,允许用户登录并将他们的 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

我做错了什么?

最佳答案

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

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 方面的问题。

关于Java:Flickr OAuth 签名无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27408932/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com