Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
mellymell
Visitor

Self-Managed Content Availability To Subscribers

Forgive me if I'm posting a question that's been asked and answered, or to the wrong place but I figured this feature isn't available in Direct Publishing. I did a lot of searching for different terms via Google and this forum, but didn't seem to find what I'm looking for.

I will maintain a user database on my website that identifies which people have access to which content. I don't need that managed by Roku because that'll just add a layer necessitating cumbersome data syncing. Is there a mechanism for having Roku query my system once they've been authenticated and their device is linked to their account in my database, for showing them specific content--specific libraries or albums or whatever they're called? So, more content for a gold user than a silver user, or for one who's been with me for 1 month vs 6 months? I mean, I know the feature is available because a hell of a lot of channel providers use it (e.g. SlingTV Packages). I just can't seem to find info on it.

I just need to know how to make Roku query my system, providing, I would imagine, just their device ID or authentication ID or whatever, and then I provide the albums/libraries or whatever that they should have access to...

Thanks in advance!!!
0 Kudos
2 REPLIES 2
sdpetersen
Visitor

Re: Self-Managed Content Availability To Subscribers

Yes, this happens all day long in pretty much every app or channel.

What you need first is an API to your website/database. It's essentially a page that accepts user accounts and returns the list of albums/movies, etc that they have access to in a program-legible format (I'd recommend JSON as your format, as it's easy to work with and is pretty universally accepted). Your website/database would manage the user account and make the decision about what content to serve the user through the API, based on the credentials the Roku Channel sent (username + password, device ID, auth ID, etc).

Then you'd need a function in your Roku channel to call that API and process the result:
Function APICall(action as string) 'This function retrieves and parses the feed and returns the result
   
   account = [INSERT GLOBAL VARIABLE HERE]

    api = CreateObject("roUrlTransfer") 'component used to transfer data to/from remote servers
    api.SetCertificatesFile("common:/certs/ca-bundle.crt")
    api.AddHeader("X-Roku-Reserved-Dev-Id", "") 'Headers for the call
    api.InitClientCertificates()
    requestUrl = Substitute("https:/[Your Website API URL]?accountID={0}&action={1}", account, action) 'The API call to retrieve user information
    api.SetUrl(requestUrl)
    
    rsp = api.GetToString() 'convert the response to a string
    responseJSON = parseJSON(rsp) 'parse the JSON string to an Associative Array

    return responseJSON 'Return the result for additional processing

End Function


You'd call this API like so:

oneRow = APICall("customer-albums")


Where "customer-albums" is your action the API is calling. Then do some processing on oneRow to add it to your interface.

This is an over simplified API call to get you going. Ideally, you'd also want to add some level of security to the API, because as it is, any one anywhere in the world could call this API and harvest the data from your website (limited by what the API is willing to output).

One thing to note: Brightscript will not allow you to make an API call like this within your main script, so you have to create a "sub-script" called a Task and launch it from the main script to gather this information.
0 Kudos
mellymell
Visitor

Re: Self-Managed Content Availability To Subscribers

That is very helpful. Thank you!

Is there a particular name for this functionality, so that I do better when attempting to search for solutions, coding examples, etc?
0 Kudos