2013-06-17 5 views
0

У меня проблема с аутентификацией в Flickr с использованием протокола OAuth и библиотеки flickcurl. Я застрял в шаге «Создать токен доступа». Я правильно oauth_client_key, oauth_client_secret, созданный request_token, request_token_secret, authorize_uri и Verifier множество (как описано here), но flickcurl_oauth_create_access_token(...) функция возвращает ошибку, и генерировать сообщение:Ошибка flickcurl - метод flickr.oauth.access_token failed

flickcurl ошибка - метод flickr.oauth.access_token неудачу с ошибкой 0 (нуль) (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()), если он не найден в файле конфигурации. Что упущено или что я делаю неправильно?

ответ

0

Я не уверен, какую версию flickcurl вы используете, но в последней версии 1.24 и некоторых исправлениях исправлено множество ошибок в ожидании 1.25. OAuth сложно понять.

В частности, это фиксация в 1.24 может исправить это: https://github.com/dajobe/flickcurl/commit/726c6737d7494f688a22f7a581bcadb61cf018d0

Смежные вопросы