2016-05-08 5 views
1

Ich habe versucht, einfache App zu erstellen, die Deezer verbinden und einzelnen Song spielen wird. Ich habe Zugang Token und schrieb dieses Programm.
Zielmaschine: Linux x86_64
API-Version: v1.0.1Deezer native API unter Linux: Unanble zum Erstellen einfacher App

#include <iostream> 
#include <deezer-api.h> 
#include <deezer-player.h> 

#define ACCESS_TOKEN "ACCESS TOKEN HERE" 

int main(int argc, char **argv) 
{ 
    dz_connect_configuration cfg = {0}; 
    cfg.app_id = "APP ID HERE"; 
    cfg.product_id = "product_id"; 
    cfg.product_build_id = "0.0.0"; 

    dz_connect_handle dz_handle = dz_connect_new(&cfg); 
    if (dz_handle == nullptr) 
    { 
     return 100; 
    } 

    auto err_code = dz_connect_activate(dz_handle, nullptr); 
    if (err_code > DZ_ERROR_NO_ERROR_ASYNC) 
    { 
     return err_code; 
    } 

    err_code = dz_connect_set_access_token(dz_handle, nullptr, nullptr, ACCESS_TOKEN); 
    if (err_code > DZ_ERROR_NO_ERROR_ASYNC) 
    { 
     return err_code; 
    } 

    auto dz_player_handle = dz_player_new(dz_handle); 
    if (dz_player_handle == nullptr) 
    { 
     return 200; 
    } 

    err_code = dz_player_activate(dz_player_handle, nullptr); 
    if (err_code > DZ_ERROR_NO_ERROR_ASYNC) 
    { 
     return err_code; 
    } 

    err_code = dz_player_load(dz_player_handle, nullptr, nullptr, "dzmedia:///track/3135556"); 
    if (err_code > DZ_ERROR_NO_ERROR_ASYNC) 
    { 
     return err_code; 
    } 

    err_code = dz_player_play(dz_player_handle, nullptr, nullptr, DZ_PLAYER_PLAY_CMD_START_TRACKLIST, DZ_TRACKLIST_AUTOPLAY_MANUAL, DZ_INDEX_IN_PLAYLIST_CURRENT); 
    if (err_code > DZ_ERROR_NO_ERROR_ASYNC) 
    { 
     return err_code; 
    } 
    std::cin.get(); 
    return 0; 
} 

Plötzlich lief ich in Probleme. Erstausstrahlung zeigt mir diese Ausgabe:

398748: 201417 dz_bufferevent: [dz_bufferevent_on_activation: 561] nicht öffnen konnte /var/tmp/settings.dat

ich diese Datei erstellt, aber ich vermute, dass es sollte nicht leer sein. Nach zweiten Lauf mit /var/tmp/settings.dat habe ich diese Ausgabe bekam:

399206: 328658 dz_crash_handler: [dz_crash_handler_init: 284] Crash-Handler verfügbar
399.206: 329.404 dzcrashreport-server-disk: [ dz_crashreport_server_url_on_read_data: 436] ERROR - Fehler beim Öffnen err: 7
399.206: 329.533 dzcrashreport-server-disk: [dz_crashreport_server_url_on_read_data: 436] ERROR - Fehler beim Öffnen err: 7
399.206: 329.590 dzcrashreport-server-disk: [dz_crashreport_server_url_on_read_data: 436] ERROR - Offener Fehler err: 7
399206: 329664 dzcrashreport-server-disk: [dz_cra shreport_server_url_on_read_data: 436] ERROR - Fehler beim Öffnen err: 7
399.206: 329.726 dzcrashreport-server-disk: [dz_crashreport_server_url_on_read_data: 436] ERROR - Fehler beim Öffnen err: 7
399.206: 329.736 dzcrashreport-Absender: [dz_crash_report_sender_retrieve_server_url_on_result: 213] Fehler - 0
399.206: 336.505 Pulseaudio-Motor: [dz_audioengine_set_output_gain: 1184] nicht init
399.206: 336.520 Pulseaudio-Motor: [dz_audioengine_set_output_gain: 1184] nicht init
399.206: 336.577 Spieler: [dz_player_play_licence kann nicht URL-Server err lesen : 1756] unbekannter Fehler 131079

Ich kann nicht verstehen, was ich falsch gemacht habe?

UPDATE:
Deezer native API: v1.0.1-v00349200

Noch kein Glück. Versucht verschiedene Variationen von "user_profile_path":

  • .
  • ./
  • ./user - wurde mit 777 Rechten in Arbeitsverzeichnis erstellt
  • /var/tmp

Es gab keine Dateien im Ordner von API erstellt.

Still got Fehler:

[dz_crashreport_server_url_on_read_data: 436] ERROR - Fehler beim Öffnen err: 7
[dz_crash_report_sender_retrieve_server_url_on_result: 213] Fehler - konnte nicht URL-Server err lesen: 0

Nach dem Hinzufügen der Implementierung von Callbacks sehe ich folgendes:

  1. dz_connect_set_access_token Anrufe Rückruf dz_activity_operation_callback mit Status DZ_ERROR_CONNECT_SESSION_OFFLINE_MODE
  2. dz_player_play Anrufe dz_player_onevent_cb mit Ereignisse DZ_PLAYER_EVENT_PLAYLIST_TRACK_NO_RIGHT

Nun Rückruf, überprüfte ich, dass ich Rechte habe diesen Track zu spielen.

Antwort

2

die "could not open" Nachricht ist nur informativ. Die Datei wird automatisch erstellt (oder aktualisiert, wenn sie beschädigt wurde). Das Problem scheint mehr mit der dz_connect_configuration verbunden zu sein, Sie müssen "user_profile_path" auf einen gültigen Pfad setzen. Hier werden temporäre Benutzerdateien gespeichert. Grüße, Cyril

UPDATE:

paar Tipps, die auch helfen könnte:

  • Mein Fehler, scheint ein Anruf zu verpassen: dz_connect_cache_path_set(dz_handle, NULL, NULL, <user_profile_path>);

  • Die DZ_INDEX_IN_PLAYLIST_CURRENT muss sein ersetzt durch 0. Ich bin damit einverstanden tun diese nicht offensichtlich ist ...

  • Prüfen, ob die access_token Sie erstellt haben, die offline_access ermöglichen muss, wenn https://connect.deezer.com/oauth/auth.php?app_id=YOUR_APP_ID&redirect_uri=YOUR_REDIRECT_URI&perms=basic_access,email,offline_access Aufruf (siehe: http://developers.deezer.com/api/oauth und http://developers.deezer.com/api/permissions)

UPDATE 2: Seit meiner letzten Antwort habe ich einen Beispielcode auf Github veröffentlicht: https://github.com/deezer/native-sdk-samples

Ich schlage vor, dass Sie einen kurzen Blick :)

Was ich in Ihrem vollständigen Code bemerkt haben Sie mich privat ist, dass gesendet:

  • Sie nicht dz_connect_offline_mode(...,false); nennend Es wird die Anmeldung tatsächlich auslösen Prozess des Native SDK.

  • Sie warten nicht auf die DZ_CONNECT_EVENT_USER_LOGIN_OK, um die Spur zu laden und abzuspielen.

Mit freundlichen Grüßen,

Cyril

+0

Dank für die Antwort, @CyrilP. Über settings.dat: App erstellt/aktualisiert diese Datei nicht. Mit Root-Zugriff gleiches Problem. Einstellung '" user_profile_path "' zu '. /' Oder '/ var/tmp /' ändert nichts, ich habe das gleiche Problem. – dpleshakov

+0

Die drei neuen Punkte sollten wirklich helfen. Bestätigst du, dass du schon alle zusammen probiert hast? Wenn Sie bestätigen, schlage ich vor, dass Sie eine E-Mail mit Ihrem access_token an [email protected] senden. Grüße, Cyril – CyrilP

+0

Hallo @ CyrilP! Ja, ich habe es geschafft, aber immer noch kein Glück. Ich habe dieselben Fehler. – dpleshakov

Verwandte Themen