我在 Flickr 中使用 OAuth 协议和 flickcurl 库进行身份验证时遇到问题。我被困在“创建访问令牌”步骤中。我有正确的 oauth_client_key、oauth_client_secret、创建 request_token、request_token_secret、authorize_uri 和 Verifier 集(如此处所述),但flickcurl_oauth_create_access_token(...)
函数返回错误,并生成消息:
flickcurl 错误 - 方法 flickr.oauth.access_token 失败,错误 0 (null) (HTTP 401)
我的应用程序:
#include <flickcurl.h>
#include "ConfigFile.h"
#include <string>
#include <iostream>
using namespace std;
int main()
{
flickcurl_init();
flickcurl *fc = flickcurl_new();
ConfigFile cf(".flickcurl.conf");
string oauth_client_key = cf.getValueOfKey("oauth_client_key");
string oauth_client_secret = cf.getValueOfKey("oauth_client_secret");
flickcurl_set_oauth_client_key(fc, oauth_client_key.c_str());
flickcurl_set_oauth_client_secret(fc, oauth_client_secret.c_str());
string oauth_token = cf.getValueOfKey("oauth_token");
string oauth_token_secret = cf.getValueOfKey("oauth_token_secret");
if (oauth_token.empty() || oauth_token_secret.empty())
{
if (flickcurl_oauth_create_request_token(fc, NULL))
return 1;
string request_token = flickcurl_get_oauth_request_token(fc);
string request_token_secret = flickcurl_get_oauth_request_token_secret(fc);
string uri = flickcurl_oauth_get_authorize_uri(fc);
cout << "Application wants to link to your Flickr account. \n"
"To authorize it go to: "<< uri << endl;
cout << "Type in Verifier displayed on a page: ";
string verifier;
cin >> verifier;
flickcurl_set_oauth_request_token(fc, request_token.c_str());
flickcurl_set_oauth_request_token_secret(fc, request_token_secret.c_str());
if (flickcurl_oauth_create_access_token(fc, verifier.c_str()))
return 1;
oauth_token = flickcurl_get_oauth_token(fc);
oauth_token_secret = flickcurl_get_oauth_token_secret(fc);
}
flickcurl_set_oauth_token(fc, oauth_token.c_str());
flickcurl_set_oauth_token_secret(fc, oauth_token_secret.c_str());
flickcurl_free(fc);
flickcurl_finish();
return 0;
}
*ConfigFile 只是一个简单的配置文件解析器。如果在配置文件中找不到 oauth_token 和 oauth_token_secret(通过 flickcurl_oauth_create_access_token() 调用),则必须创建它。错过了什么或我做错了什么?