Die Rocket Beans API

Moin :slight_smile:

hmmm seltsam. Ich prüfe das. Danke für den Hinweis!

Grüße

1 „Gefällt mir“

Moin! Spätes, dafür sehr kurzes Update:
Das Problem sollte sich mit dem letzten Patch eben behoben haben! :slight_smile:

4 „Gefällt mir“

Ahhhhh moin @Novalis!

Holy Debugger, warum hab ich deinen Post nicht mitbekommen? Erm, ja, ich lass mal alle Ausreden weg und stelle mich direkt der Frage. Die ist vll auch 7 Monate später noch aktuell :cold_sweat:

Die Homepage verarbeitet die Votes bereits über WebSockets. Dazu müsste man eigentlich nur die Authentifikation/Authorisierung eben über jenen WebSocket durchführen und könnte im Anschluss Vote messages absetzen. Auch eine OAuth App wäre denkbar. Ein erster Blick in die Code Base hat mir verraten, dass das eigentlich schon heute möglich sein sollte. Die entsprechenden Socket Messages habe ich für ein anderes Projekt bereits implementiert →

Erfolgreich authentifizierte Clients bekommen dann ein Event vom Typ AC_DYNINTERACTION_START und damit hat man eigentlich alle Infos, um ein CA_DYNINTERACTION_EVENT mit entsprechenden Werten für den Typ „votese“ absetzen zu können. Das müsste den Flow vervollständigen. Sollte da was entstehen, hau’ mich gerne an :wink:

PS: Ich versuche im Forum aktiver zu sein :neutral_face:

5 „Gefällt mir“

Vielen Dank. Der Authorization Endpunkt ist damit durchgespielt. Jetzt habe ich allerdings Probleme beim Token Endpunkt. Ich hoffe ich stelle mich nicht nur dumm an :sweat_smile:.
Ich nutze gerade RapidAPI zum Testen (ehemals Paw).

Wenn ich Client ID und Passwort in den Auth Header packe, erhalte ich die Fehlermeldung, dass die Parameter client_id und client_secret fehlen. Ich gehe daher davon aus, dass die im Body sein sollen.

POST https://api.rocketbeans.tv/v1/oauth2/token
Accept: application/json, text/json, text/javascript, application/xml, text/xml, application/x-plist, application/x-www-form-urlencoded, text/plain, text/html, application/xhtml+xml
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Authorization: Basic HierStehenClientIDUndClientSecretInBase64Form
---Body---
code=HierStehtDerCodeDenIchGeradePerRedirectErhaltenHabe&scope=user.info&redirect_uri=http%3A%2F%2Flocalhost&grant_type=authorization_code

Error OAuth 2 Response 'Access Token' Request failed: bad request (400)
HTTP 400
---Body---
{"error":"invalid_request","error_description":"Missing Parameters: client_id,client_secret"}

Wenn ich sie in den Body packe, erhalte ich die Fehlermeldung, dass der Code nicht bekannt oder abgelaufen sei. Den habe ich aber Millisekunden davor per Redirect vom Authorization Endpunkt erhalten.

Event OAuth 2 Request 'Access Token'
POST https://api.rocketbeans.tv/v1/oauth2/token
Content-Type: application/x-www-form-urlencoded;charset=UTF-8
Accept: application/json, text/json, text/javascript, application/xml, text/xml, application/x-plist, application/x-www-form-urlencoded, text/plain, text/html, application/xhtml+xml
---Body---
code=HierStehtDerCodeDenIchGeradePerRedirectErhaltenHabe&scope=user.info&redirect_uri=http%3A%2F%2Flocalhost&client_id=ClientID&client_secret=ClientSecret&grant_type=authorization_code

Error OAuth 2 Response 'Access Token' Request failed: bad request (400)
HTTP 400
---Body---
{"error":"invalid_request","error_description":"The provided code is expired or unknown"}

Die OAuth2 Implicit Methode scheint allerdings zu funktionieren. Damit kann ich erstmal weitermachen.

Mit ganz viel Tricksen und Raten habe ich es jetzt geschafft, dass Gregor die neuste Folge Speedrundale als RBSCVideo auf meinem Apple TV Simulator anmoderiert. :tada:

Ich musste allerdings den Video Token über die Webseite auslesen. Wenn ich versuche den über die API zu bekommen, erhalte ich immer einen 403er. Mit dem Token, dass ich durch OAuth bekommen habe (s.u.). Dürfen Apps keinen RBSCVideo Token abrufen? Ich habe auch einmal versucht alle Scopes für die App zu aktivieren um auszuschließen, dass es daran liegt. Andere authentifizierte Calls gehen mit dem Token (bspw. Nutzerdaten abrufen).

Sorry, wenn ich den Thread hier vereinnahme :sweat_smile:

Request
GET /v1/rbsc/video/token/a0e7dcd882c19e542b45684746cbe638 HTTP/1.1
Authorization: Bearer HierStehtMeinToken
Cookie: RBLB=613c6ff09e7bc007
Host: api.rocketbeans.tv
Connection: close
User-Agent: RapidAPI/4.1.3 (Macintosh; OS X/13.1.0) GCDHTTPRequest

Response
HTTP/1.1 403 Forbidden
Date: Fri, 10 Feb 2023 20:18:21 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 69
Connection: close
strict-transport-security: max-age=15768000
access-control-allow-origin: *
CF-Cache-Status: DYNAMIC
Server: cloudflare
CF-RAY: 7977889138172187-DUS
alt-svc: h3=":443"; ma=86400, h3-29=":443"; ma=86400

{"success":false,"message":"Permission Denied","code":2003,"data":{}}

Kein Ding, genau für solche Fragen ist der Thread doch da :slight_smile:

Aktuell können durch OAuth Apps generierte Access Token keine RBSC Video Token abrufen. Ich kann dir allerdings anbieten, das Thema mal mit in unser Team zu nehmen, um dort zu diskutieren, ob man einen solchen Scope einführen könnte. Eigentlich sollte nichts dagegen sprechen. Der Access Token der durch einen „klasssischen“ Login Flow, wie ich ihn hier im Thread weiter oben angedeutet habe, könnte das ja auch jetzt schon.

2 „Gefällt mir“

Stimmt, guter Hinweis. Über nen OAuth-Scope wärs für ne Drittanbieter-App gefühlt sauberer, daher wäre so ein Scope super. Aber ich probier’s erstmal über den klassischen Login Flow. :+1:

Ah, sehr schön danke dir vielmals Ben :slight_smile:. Ich sag auf jeden Fall Bescheid, sobald ich da mal was fertig habe (leider selber kaum Zeit für persönliche Projekte :sweat_smile:.

Da haben sich bei mir doch glatt noch ein paar Fragen aufgetan, wenn’s dir nix ausmacht. Ich hau die einfach mal hier drunter :slight_smile::

  1. Hab ich richtig verstanden, dass VoteSEFrontendData, bzw. votese der Successor zu VoteFrontendData, bzw. vote ist?
  2. Ist in VoteSEFrontendData die Property theme die Art der Frage, also z.B. Volltext oder Single Choice
  3. wofür genau existiert die Property votedOption?

Danke dir nochmal für deine Hilfe :slight_smile:.

Hey Novalis!

  1. Ja, das ist richtig
  2. theme ist bei uns eigentlich nur in Benutzung wenn man dem Vote ein bestimmtes Aussehen (ein Design) geben will
  3. votedOption ist der Optionsindex, für den der Benutzer abgestimmt hat. Wird erst nach dem Abstimmen ausgegeben. So kann dir deine ausgewählte Option angezeigt werden auch wenn du die Seite neulädst und alle Votingdaten erneut übermittelt werden.
2 „Gefällt mir“

Dieselbe Fehlermeldung erhalte ich auch für https://rbtvsocialwall.rocketmates.de/

Lässt sich das von meiner Seite beheben oder liegt da was am OAuth Service schief?

Hi Doom,

gibt es bei den Votes auch eine Option um herauszufinden, um welche Art es sich bei den Fragen handelt? Sowas wie eine type Property mit möglichen Werten, wie zum Beispiel singlechoice oder free_text?

Hier ein kleines Beispiel, wie ich mir das gerade vorstelle:

type QuestionType =  'singlechoice'  |  'multiplechoice'  |  'freetext'

export interface VoteSEFrontendData {
  // Other Properties
  type: QuestionType
};

Bei Chatduell kann man ja Beispielsweise beliebige Begriffe eingeben, während bei Pen and Paper vordefinierte Werte für die Abstimmung bereitgestellt werden.

Ich prüf mal im Laufe der Woche den OAuth Cycle durch. Evtl. ist da in einer der letzten Patches was kaputt gegangen :+1:

Ich habs noch nicht geschafft, aber ein Ticket ist erstellt und ich hab es nicht vergessen :cold_sweat:

1 „Gefällt mir“

Das ging jetzt doch schneller als ich gedacht hatte :smiley: Ich konnte das Problem auf ein Dependency Update von vor ein paar Wochen zurückführen und auch gleich beheben. Der code Flow läuft wieder. Danke für den Hinweis @Cyberblitzbirne & @pmk1c !

4 „Gefällt mir“

Vielen lieben Dank, läuft wieder problemlos! :v:

5 „Gefällt mir“

Hallo liebe RBTV Entwickler,

vielen Dank für die Bereitstellung einer solchen API. Ich nutzte die RBTV API auch für mein Projekt und bin sehr zufrieden. Mir ist nur eine Sache aufgefallen: Die Potrait-Bilder der Bohnen (zum Beispiel dieses hier: https://static.rocketbeans.tv/img/f9394823-5717-493b-83d7-c8cad83165fe_597x500.png) lassen sich nicht aus einem lokalen Context heraus laden. Als Beispiel, wenn eine Webseite aus einem lokalen Package heraus geladen wird, so wie es bei einigen Smart TVs der Fall ist, werden alle Potrait-Bilder vom Server blockiert. Ich sehe, dass die Potrait-Bilder über Cloudflare geroutet werden. Könnte es sein, dass ihr dort spezielle Referrer-Policies eingestellt habt? Aktuell nutze ich einen Image-Proxy, um dieses Problem zu umgehen. Ich würde diesen Workaround aber gerne wieder entfernen.

Beste Grüße
Benjamin

1 „Gefällt mir“

Da die Server heute ausnahmsweise etwas gehustet und gestottert haben, wollte ich das zum Anlass nehmen um mal Danke zu sagen, für die ansonsten durchgehende Verfügbarkeit der Server und der tollen API an sich. :+1:

8 „Gefällt mir“

Bin ich irgendwie blind oder ist der button zur Verifizierung verschwunden?
Ich finde nämlich nirgendso etwas um diese zu beantragen

Whoops, danke für die Meldung. Da scheint es einen Bug zu geben bei der Anzeige.
Ist schon gefixt, können wir aber erst nächste Woche patchen!