2017-09-06 6 views
0

現在、Node.jsとExpressを学習しており、spotify-web-api-nodeなどの外部ライブラリを使用せずにSpotify Web APIを照会する単純なアプリケーションを構築したいと考えていました。私のコードはhttps://pastebin.com/Jwe8sckJにあります。Expressルート以外でSpotifyアクセストークンを使用する方法

私の "/ callback"ルートは以下のようになります。

app.get("/callback", function(req, res){ 
    res.send("OK!") 
    var authCode = req.query.code 
    var options = { method: 'POST', 
     url: 'https://accounts.spotify.com/api/token', 
     headers: { 'content-type': 'application/x-www-form-urlencoded' }, 
     form: 
     { grant_type: 'authorization_code', 
     code: authCode, 
     redirect_uri: 'https://example.com/callback', 
     client_id: clientId, 
     client_secret: clientSecret } }; 
    request(options, function (error, response, body) { 
    if (error) throw new Error(error); 
    var accessToken = JSON.parse(body).access_token; 
    var refreshToken = JSON.parse(body).refresh_token 
    console.log("Access Token: " + accessToken); 
    console.log("Refresh Token: " + refreshToken); 
    }); 

}); 

これまでのところすべて正常に動作していますが、アクセストークンとリフレッシュトークンを取得できます。私が混乱している部分は、 "/コールバック"ルートの外でこれらのトークンをどのように使用するのかです。あるいは、変数をグローバルにどのように保存すればよいかという別の問いかけがあります。私がそれをしたら、それはスクリプトの新しいセッションに影響を与えますか?

答えて

0

私があなたを得たら、後で使うためにアクセストークンを保存します。グローバル変数を宣言し、後で使用することができます。

global.spotify_access_token = ''; 

この変数は、ファイルの先頭に宣言してください。この変数を使用して、以下のコールバックのアクセストークンを保存することができます。

spotify_access_token = JSON.parse(body).access_token; 

希望します。

ありがとうございました。

0

最も一般的な解決策は、これらのトークンをデータベース、つまりMongoDBまたはMySQLに格納し、必要に応じて取得することです。クライアントごとに受け取ったトークンを設定するには、おそらくsessionsを使用します。

トークンをセッションに保存することもできますが、セッションは揮発性であることに注意してください。

+0

アクセストークンをユーザーのブラウザにクッキーとして保存するとどうなりますか?これらのクッキーは1人のユーザーに限定され、プライベートユーザーデータを収集するために使用する可能性があります – Dan

+0

上記のライブラリを使用してセッションを作成すると、バックグラウンドでCookieが作成されます。クライアントはIDを持つクッキーを保存し、各リクエストと共にサーバーに送信します。サーバーはそのCookieのIDを使用してクライアントを認識できます。 –

関連する問題