2016-11-30 3 views
0

Ich hoffe, es geht Ihnen gut. Ich arbeite an einem Projekt, das die Arbeit mit der Steam Web API in angular JS beinhaltet. Ich versuche, die Daten aus dieser URL zu holen:

http://api.steampowered.com/ISteamApps/GetAppList/v2 

Wenn ich meinen Code in Google Chrome führen Sie es zeigt:

Uncaught SyntaxError: Unexpected token : 

Ich weiß, dass es dieses Problem mit CORS (und einige Seiten nicht spielen schön mit ihm, so versuche ich, um zu arbeiten, dass die Verwendung von JSONP. gibt es etwas, das mir fehlt oder falsch?

mit freundlichen Grüßen

Adi

Hier den entsprechenden Code-Schnipsel ist (ich habe meinen API-Schlüssel pro den Dampf Web API Bedingungen ausgeschlossen):

var steam_api = "https://api.steampowered.com/ISteamApps/GetAppList/v2"; 
steam_api += "?key=mySteamKey"; 
steam_api += "&format=json&callback=JSON_CALLBACK"; 

$scope.steamGames = {}; 
    $http.jsonp(steam_api) 
    .success(function(data, status, headers, config){ 

    console.log(data); 
    $scope.steamGames = JSON.parse($scope.rawData); 
    $scope.steamSearch = document.getElementById('Search').value; 

    }); 

Edit: Just for Klarheit Ich habe auch mit einem JSON-Validator und der JSON, dass geprüft spuckt aus ist gültig.

+0

Sie eine ausführlichere Fehlermeldung zeigen könnten? – Ladmerc

+0

In Bezug auf die Fehlermeldung, die so viel wie Chrome Entwicklerkonsole angezeigt wird. –

+0

Ich weiß nicht, ob das hilft, aber wenn ich & jsonp = hinzufüge? Am Ende von steam_api verschwindet der Fehler. So gut das klingen mag, ich habe ein paar console.log-Zeilen erstellt und sie bestätigen, dass es tatsächlich meine .success-Funktion überspringt. Ich nehme den & Jsonp heraus und der unerwartete Token-Fehler wird erneut angezeigt. Was könnte das bedeuten? –

Antwort

1

Wir haben eine Antwort. Die Steam-API erlaubt es Ihnen nicht, Anfragen mit CORS zu senden (da Cross-Ursprungs-Anfragen nicht erlaubt sind). Wenn Sie es über JSONP senden, erhalten Sie den unerwarteten Token-Fehler wie ich. Aber es gibt noch Hoffnung.

Mithilfe eines Tutorials zu CodePen konnte ich die Anfrage an die Steam Web API stellen (indem ich meinen Server in NodeJS verwendete) und den JSON aus der Antwort in einer Variablen erfassen. Meine nächste Vorgehensweise wird es sein, diese Variable irgendwie an Angular JS zu senden und die richtigen Werte daraus zu erhalten, indem ich die ng-repeat-Direktive in meinem HTML benutze. Danke an alle für Ihre Hilfe.

Edit: Hier ist der Link zum CodePen Tutorial zusammen mit dem erforderlichen NodeJS/Express.js Code: https://codepen.io/johnchristopherjones/post/how-do-i-use-the-steam-api-in-my-web-app

app.get('/steam/civ5achievements', function(httpRequest, httpResponse) { 
    // Calculate the Steam API URL we want to use 
    var url = 'http://api.steampowered.com/ISteamUserStats/GetSchemaForGame/' + 
     'v2/?key=YOURSTEAMAPIKEYHERE&appid=8930'; 
    request.get(url, function(error, steamHttpResponse, steamHttpBody) { 
     // Once we get the body of the steamHttpResponse, send it to our client 
     // as our own httpResponse 
     httpResponse.setHeader('Content-Type', 'application/json'); 
     httpResponse.send(steamHttpBody); 
    }); 
});