feed-service.js ファイルからデータを取得しようとしている controller.js ファイルがあります。FEEDLY_USER_ID と FEEDLY_ACCESS_TOKEN はアクセス可能で、別の config.js ファイルで定義されています。
コントローラー.js:
$scope.feedlyGlobalAll = FeedService.getGlobalAll();
フィード-service.js:
var request = require('request');
var globalOptions = {
url: 'https://cloud.feedly.com/v3/streams/contents?streamId=user/' + FEEDLY_USER_ID + '/category/global.all',
auth: {
'bearer': FEEDLY_ACCESS_TOKEN
}
};
service.getGlobalAll = function(){
request.get(globalOptions, function(error, response, body){
if(!error && response.statusCode == 200){
service.globalAll = JSON.parse(body);
return service.globalAll;
}
// error code here //
})
}
https.get() が機能しなかったため、「request」という npm パッケージを使用して GET を作成しています。この Feedly API 呼び出しには、ヘッダーで渡された URL、ユーザー ID、およびアクセス トークンが必要です。
私は読んでいて、どうやらコールバックまたはプロミスを使用することになっているようですが、どちらも機能させることができません。http.get() を使用すると、http.get().then(yada yada) による promise を利用できます。これは、別の場所で行っているforecast.io 呼び出しで機能します。request モジュールは明らかに .then() を許可していません。私は通常 TypeError に遭遇し、.then() は関数ではありません。
https.get() を実行しようとしたとき、使用していたコードは次のとおりです。私は成功した応答を得ることができませんでした。
var url = {
url: 'https://cloud.feedly.com/v3/streams/contents?streamId=user/' + FEEDLY_USER_ID + '/category/global.all',
'headers': {
'Authorization': 'Bearer ' + FEEDLY_ACCESS_TOKEN
}
};
https = require('https');
https.get(url).then(yada yada)
https.get 呼び出しの var url でさまざまなことを試しました。引用符の有無にかかわらず試してみました。リクエストモジュールで動作するように auth: bearer トークンだけを試しましたが、動作させることができませんでした。
この問題の解決策は次のいずれかです。
- 既存のリクエスト モジュール コードを使用したフィード サービスからコントローラへのコールバック。
- https.get リクエストの URL を形成する正しい方法を見つけたら、その promise 関数を利用できます。