0

flickrのユーザーからお気に入りの写真のリストを取得するために Node.js に取り組んでいます。お気に入りの公開リストを取得する方法が他にあることは知っていますが、その方法は私にとってはうまく機能しますが、これを使用するとflickr API が返されますこのエラー。

{"stat":"fail", "code":98, "message":"Invalid auth token"}

これは私のコードです:

var util  = require('util'),
http      = require('http'),
keys      = require(__dirname + '/../oauth/flickrKeys'),
utilities = require(__dirname + '/Utilities');

var getPhotos = function(userInfo, callback) {
var requestResponse,
parameters,
requestPoint,
url,
toHash,
secretKey,
api_signature,
method = "flickr.favorites.getList",
format = "json";
requestPoint = 'http://api.flickr.com/services/rest/';

url = requestPoint 
    + '?api_key=' + keys.clave
    + '&auth_token=' + userInfo.oauth_token
    + '&format=' + format
    + '&method=' + method
    + '&min_fave_date=' + userInfo.min_fave_date
    + '&nojsoncallback=1'
    + '&user_id=' + encodeURIComponent(userInfo.user_nsid);

parameters = 'api_key=' + keys.clave
    + '&auth_token=' + userInfo.oauth_token
    + '&format=' + format
    + '&method=' + method
    + '&min_fave_date=' + userInfo.min_fave_date
    + '&nojsoncallback=1'
    + '&user_id=' + encodeURIComponent(userInfo.user_nsid);
toHash = 'GET&'
    + encodeURIComponent(requestPoint) + '&'
    + encodeURIComponent(parameters);

// coding hash.
secretKey = keys.secreto + "&" + userInfo.oauth_token_secret;
api_signature = utilities.generateFlickrSignatureHex(toHash, secretKey);

// adding api signature to the url.
url = url + '&api_sig=' + encodeURIComponent(api_signature);

http.get(url, function(res) {});
}
4

1 に答える 1

0

下の行で

url = requestPoint 
+ '?api_key=' + keys.clave
+ '&auth_token=' + userInfo.oauth_token
+ '&format=' + format
+ '&method=' + method
+ '&min_fave_date=' + userInfo.min_fave_date
+ '&nojsoncallback=1'
+ '&user_id=' + encodeURIComponent(userInfo.user_nsid);

これより前にオブジェクトを初期化していないと思いますuserInfo。これにより、前述の認証エラーが発生しますuserInfo.oauth_token

質問編集に更新

userInfoAPIを呼び出す前に属性があることを確認してoauth_tokenください。API呼び出しをチェック内にラップできるのと同じように

if(typeof(userInfo)!="undefined" && typeof(userInfo.oauth_token)!="undefined" && userInfo.oauth_token!="") {

    //code for api call

}
于 2013-08-23T19:12:24.537 に答える