🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CMS

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Netlify

Netlifyは、静的サイトを超高速でホスティングできる高機能なWebサービスです。WordPressといった動的処理を必要としないLPなどの静的Webサイトを公開することが可能。カスタムドメイン設定や無料SSL証明書などの多くの機能を無料で使用できます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

5053閲覧

Nuxt+Contentful 、アクセストークンでエラーになる

harunon

総合スコア15

CMS

CMS(Content Management System)は複数のユーザーでコンテンツを編集することが可能なWebサイトの管理/構築用のプラットフォームを指します。また、会社単位で運用管理するものはECMと呼びます。

Vue.js

Vue.jsは、Webアプリケーションのインターフェースを構築するためのオープンソースJavaScriptフレームワークです。

Nuxt.js

Nuxt.jsは、ユニバーサルなSPAが開発可能なVue.jsベースのフレームワーク。UIの描画サポートに特化しており、SSRにおけるサーバーサイドとクライアントサイドのUIレンダリングなどさまざまな機能を持ちます。

Netlify

Netlifyは、静的サイトを超高速でホスティングできる高機能なWebサービスです。WordPressといった動的処理を必要としないLPなどの静的Webサイトを公開することが可能。カスタムドメイン設定や無料SSL証明書などの多くの機能を無料で使用できます。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2019/11/21 14:13

https://izm51.com/posts/nuxt-contentful-netlify-blog-making-1/
を見ながらNuxt+ContentfulのCMSをやろうとしたのですが、アクセストークンでエラーになります。
{{ post.fields.title }}の部分が表示されません。。

Consoleのエラー表示
イメージ説明

index.vue

javascript

1<template> 2 <div class="posts"> 3 <div v-for="(post, index) in posts" :key="index" class="post"> 4 {{ post.fields.title }} 5 </div> 6 </div> 7</template> 8 9<script> 10import client from '~/plugins/contentful' 11export default { 12 asyncData({ params }) { 13 return client 14 .getEntries({ 15 content_type: 'post', 16 order: '-sys.createdAt', 17 }) 18 .then(entries => { 19 return { posts: entries.items } 20 }) 21 .catch(e => console.log(e)) 22 }, 23 head: { 24 title: 'latest Posts', 25 }, 26 methods: { 27 formatData(iso) { 28 const date = new Date(iso) 29 const yyyy = new String(data.getFullYear()) 30 const mm = new String(data.getMonth() + 1).padStart(2, "0") 31 const dd = new String(date.getDate()).padStart(2,"0") 32 return `${yyyy}.${mm}.${dd}` 33 } 34 }, 35 //methods "posts" is not defined on the ~~が出るので追加してます>< 36 props: { 37 posts:{ 38 type:String 39 } 40 } 41} 42</script>

nuxt.config.js

javascript

1require('dotenv').config() 2const client = require('./plugins/contentful') 3 4module.exports = { 5 head: { 6 title: 'nuxt-cms', 7 meta: [ 8 { charset: 'utf-8' }, 9 { name: 'viewport', content: 'width=device-width, initial-scale=1' }, 10 { hid: 'description', name: 'description', content: 'Nuxt.js project' } 11 ], 12 link: [ 13 { rel: 'icon', type: 'image/x-icon', href: '/favicon.ico' } 14 ] 15 }, 16 loading: { color: '#3B8070' }, 17 build: { 18 extend (config, { isDev, isClient }) { 19 if (isDev && isClient) { 20 config.module.rules.push({ 21 enforce: 'pre', 22 test: /.(js|vue)$/, 23 loader: 'eslint-loader', 24 exclude: /(node_modules)/ 25 }) 26 } 27 } 28 }, 29 plugins: [ 30 '~/plugins/contentful' 31 ], 32 modules: [ 33 '@nuxtjs/dotenv', 34 '@nuxtjs/markdownit' 35 ], 36 markdownit: { 37 injected: true, 38 html: true, 39 linkify: true, 40 typography: true, 41 }, 42 generate: { 43 routes() { 44 return client 45 .getEntries({ content_type: 'post'}) 46 .then(entries => { 47 return entries.items.map(entry => { 48 return { 49 route: "/posts/"+entry.fields.slug, 50 payload: entr 51 } 52 }) 53 }) 54 } 55 }, 56 env: { 57 CTF_SPACE_ID: process.env.CTF_SPACE_ID, 58 CTF_CDA_ACCESS_TOKEN: process.env.CTF_CDA_ACCESS_TOKEN, 59 } 60}

contentful.js

javascript

1const contentful = require("contentful") 2const config = { 3 space: process.env.CTF_SPACE_ID, 4 accessToken: process.env.CTF_CDA_ACCESS_TOKEN 5 } 6 const client = contentful.createClient(config) 7 export default client

contentfulで設定したAPIキーから直接curlしても↓になるので(参考: https://www.contentful.com/developers/docs/references/authentication/ )Nuxt側ではなくContentful側の問題かな、、とも思ってますがよくわかりません。。お手上げです><

javascript

1# Request 2curl https://cdn.contentful.com/spaces/cfexampleapi/entries?access_token=wrong 3 4# Response 5{ 6 "sys": { 7 "type": "Error", 8 "id": "AccessTokenInvalid" 9 }, 10 "message": "An access token is required. Please send one through the HTTP Authorization header or as the query parameter \"access_token\".", 11 "requestId": "念の為伏せます" 12}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

contentful.createClient()の使い方自体は同じです。

curlでも取得できないとのことなので、エラー文で指摘されている通り、access_tokenが誤っていると思います。
「Content Delivery API - access token」を正しく指定できてるか確認してみて下さい。

おそらく関係ありませんが、Contentfulに複数環境ある場合は、environmentの設定が必要かもしれません (こちらは未確認です)。

投稿2019/11/24 14:11

yuhigash

総合スコア327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

harunon

2019/11/27 09:24

一度ContentfulのSpaceなど全部削除してイチから作り直し、API Keyセットし直したらうまく行きました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問