質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.46%
JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

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

Q&A

解決済

1回答

108閲覧

Invalid API keyについて

gonzaqawr

総合スコア2

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

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

0グッド

0クリップ

投稿2024/04/29 06:21

実現したいこと

映画情報を記載するアプリをRuby on railsで作成中です。
TMDb APIというAPIを使い実装に1度成功したものの、突然APIキーが無効とのエラーがでてしまいました。もう一度申請してAPIキーを取得すべきか、他解決策をご存じの方、何卒教えていただけると幸いです。

発生している問題・分からないこと

movies/search.html.erbに遷移後Invalid API key: You must be granted a valid key.のエラーが発生してしまいます。

エラーメッセージ

error

1Tmdb::Error in Movies#search 2 3Invalid API key: You must be granted a valid key. 4Extracted source (around line #21): 519 620 721 822 923 1024 11 12 <%# 映画を表示 %> 13 <% if params[:looking_for].present? %> 14 <% movieinfo = JSON.parse((Tmdb::Search.movie(params[:looking_for])).to_json) %> 15 <h2><%= params[:looking_for] %>の検索結果</h2> 16 <% i = 0 %> 17 <div class="card-wrapper">

該当のソースコード

(.envに記載) TMDB_API=取得した自分のTMDB APIキー
(.gitignoreに記載) /.env*

config/initializers/tmdb_api.rb

1Tmdb::Api.key(ENV['TMDB_API_KEY'])

movies_controller.rb

1class MoviesController < ApplicationController 2 require 'themoviedb-api' 3 Tmdb::Api.key(ENV['TMDB_API_KEY']) 4 Tmdb::Api.language("ja") 5 6 7 def search 8 page_number = params[:page] || 1 9 if params[:looking_for] 10 movie_title = params[:looking_for] 11 url = "https://api.themoviedb.org/3/search/movie?api_key=#{ENV['TMDB_API']}&language=ja&query=" + URI.encode_www_form_component(movie_title) 12 else 13 url = "https://api.themoviedb.org/3/movie/popular?api_key=#{ENV['TMDB_API']}&language=ja" 14 end 15 response = Net::HTTP.get(URI.parse(url)) 16 @movies = Kaminari.paginate_array(JSON.parse(response)['results']).page(page_number).per(10) 17 end 18 19 def show 20 movie_id = params[:id] 21 url = "https://api.themoviedb.org/3/movie/#{movie_id}?api_key=#{ENV['TMDB_API']}&language=ja" 22 response = Net::HTTP.get(URI.parse(url)) 23 @movie = JSON.parse(response) 24 end 25end 26

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

https://qiita.com/00000000/items/1f76ededb5df222d0f06
https://qiita.com/kazuhito_nakayama/items/c9cf578058d1e4f078a1
こちらのサイトを参考に実装しました。

補足

特になし

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

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

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

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

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

CHERRY

2024/04/29 13:49

質問に記載されているコードでは、 >(.envに記載) > TMDB_API=取得した自分のTMDB APIキー と > config/initializers/tmdb_api.rb > Tmdb::Api.key(ENV['TMDB_API_KEY']) で、環境変数の名前が異なっているようです( TMDB_API と TMDB_API_KEY ) が、どちらが正しい名前ですか?
gonzaqawr

2024/04/30 00:58

コメントありがとうございます! CHERRYさんのおっしゃる通り環境変数の違いが原因でした。 TMDB_APIに統一したところ上手くいきました。 本当に助かりました。ありがとうございます。
guest

回答1

0

自己解決

CHERRYさんの回答いただき環境変数の違いが原因だと判明しました。
TMDB_APIに統一したところ上手くいきました。

投稿2024/04/30 01:00

gonzaqawr

総合スコア2

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問