1

Spotify API 1.x を試しています。私のマニフェスト

"Dependencies": {
      "api": "1.20.1",
      "views": "1.24.1"
  }

新しい Spotify API で現在のセッションを取得する際に問題が発生しました。セッションドキュメント

しばらくして、これでユーザー情報を取得しました:

require(['$api/models','$api/models#User','$api/models#Session'], function(models) {
    var user = models.User.fromURI('spotify:user:@');
    user.load('username', 'name').done(function(u) {
        userUid = u.identifier;
    });
});

しかし、セッションにはロードメソッドがなく(スローエラーが発生します)、models.Session を見ると、値を設定できませんか??? :(

4

2 に答える 2

1

セッションに関して、Spotify のドキュメントは少し誤解を招きやすいと思います。ドキュメントからではなく、試行錯誤とグーグルで見つけたことがたくさんあります。

@Backer が言うように、API バージョンを 1.3.0 (または利用可能な場合はそれ以上) に変更します。これを有効にするには、Spotify を再起動する必要があることに注意してください

次に、次のように Session オブジェクトにアクセスできます (ここでは、「セッション」は小文字にする必要があります)。

models.session.load('product','connection','device','user').done(function(s){
    console.log('sess:',s)
});

User オブジェクトはこれの一部になりますが、ロードしない限り、プロパティは設定されません。以下は、Session および User からプロパティのサブセットを取得する例です。

require([
'$api/models','$api/models#Session'
], function(models) {
app.user = {};
    models.session.load('product','connection','device','user').done(function(sess){
       sess.user.load('name', 'username', 'subscribed').done(function(user){
           app.user.name = user.name; // string
           app.user.username = user.username; // string
           app.user.subscribed = user.subscribed; // boolean
       });
       app.user.connection = sess.connection; // string
       app.user.country = sess.country; // string ISO-2
       app.user.device = sess.device; // string
       app.user.language = sess.language; // string ISO-2
       app.user.product = sess.product; // string

    });
});

Session オブジェクト全体:

Session
_done: 65535
_listening: true
_ob: Object
_obcount: 1
_requestArgs: Array[0]
_requestName: "session_event_wait"
capabilities: Object
connecting: false
connection: "wlan"
country: "SE"
developer: true
device: "desktop"
incognito: false
language: "en"
online: true
product: "open"
resolution: 1
streaming: "enabled"
testGroup: 000
user: User
    _done: 255
    currentUser: true
    identifier: "longcodehere"
    image: "http://profile-images.scdn.co/artists/default/anotherlongcodehere"
    images: Array[2]
    name: "My Name"
    subscribed: false
    uri: "spotify:user:@"
    username: "myusername"
    __proto__: c
    __proto__: c
于 2014-01-17T21:28:36.713 に答える
1

manifest.jsonAPI バージョンを次のように変更しました。

"api": "1.3.0"

これで、自分の国など、セッションから情報を取得できます。

var userCountry = models.session.country;
于 2013-04-03T09:04:12.557 に答える