Roku Auth SDK

The Roku Auth SDK is an authentication library written in Brightscript. It designed to streamline the login process with Auth0, providing developers with efficient tools to retrieve login details and authenticate users swiftly. Beyond its authentication capabilities, the Auth SDK encompasses Subscription Video-On-Demand (SVOD) and Transactional Video-On-Demand (TVOD) functionalities. This comprehensive feature set empowers developers to seamlessly integrate subscription and transactional video services.


The dotstudioPRO Roku Auth SDK boasts robust support for seamless login processes through Auth0 integration. Leveraging the Core SDK, it efficiently communicates with the API to retrieve SVOD (Subscription Video-On-Demand) or TVOD (Transactional Video-On-Demand) plans, displaying subscription options for users. Users can easily subscribe or make individual purchases through designated Roku store. Following the user's transactional actions on the store, the SDK triggers an API call to confirm the subscription status.

Key Features:

  • Comprehensive Functionality Support: The SDK have comprehensive support for login, logout, SVOD(Subscription Video On Demand), and TVOD(Transactional Video On Demand) purchase functionalities.
  • Internal User Detail Storage: The Auth SDK also internally stores user details upon successful login.
  • Efficient Callback Handling: The Auth SDK efficiently manages the necessary callbacks for key events such as login, logout, SVOD(Subscription Video On Demand), and TVOD(Transactional Video On Demand).


Please review the following details for accurate information on the minimum OS requirements.

Platform Minimum Version Installation Status
Roku 11.0+ Fully Tested


Utilize the following commands to seamlessly install the Roku Auth SDK into your React Native project:

git clone

Copy the auth-roku/dotstudioPRO-auth folder into your channel so that the path to the folder is pkg:/components/dotstudioPRO-auth


Use Xcopy command for copy auth-roku folder and put in Apps pkg:/components folder

Xcopy [source File Path] [destination File Path] /E /H /C /I.

How to Use


To add Auth Component in your Roku Scene xml and brs file.

Function init()
  m.authcontroller ="authcontroller")
  m.authcontrollerConfig = {
    "skippable": false,
    "authenticationType": "login",
    "auth0Config": {
        ClientId : ,
        CustomerTokenKey : ,
        UserMetadata: ,
        scope : ,
        grantType : ,
      "refreshbuttonImage" : "pkg:/images/refresh_code.png",
      "screenBackgrounColor" : "#ffffff",
      "activateBackgroundColor" : "#D3D3D3",
      "secondrytextColor" : "#696966",
      "activationCodetextColor" : "#AA3D47",
        font : "",'use any app font like this "pkg:/fonts/abc.ttf"
        size : "66"
        font : "",
        size : "32"
        font : "",
        size : "45"
        font : "",
        size : "38"

  m.authcontroller.observeField("onAuthenticationSuccess", "onAuthenticationSuccess")
  m.authcontroller.observeField("onAuthenticationFail", "onAuthenticationFail")
end Function

SVOD (Subscription Video On Demand)

To add SVOD Component in your Roku Scene xml and brs file.

Function onSelectSubscriptionButton()
    m.svodplanscreen = CreateChildNode("SVODPlansScreen")
    m.svodplanscreen.observeField("onSelectPlan", "onSelectPlan")
    m.svodplanscreen.observeField("onRestoreSubscription", "onRestoreSubscription")
    m.svodplanscreen.observeField("onSelectSkipForNow", "onSelectSkipForNow")
    m.svodplanscreen.observeField("onTryWithDiffAcc", "onTryWithDiffAcc")
End Function

Function onSelectPlan(message as object) as void
    plan= message.getRoSGNode()
    m.svodPlandetail = CreateChildNode("SVODPlanDetailScreen")
    m.svodPlandetail.plandata = plan.onSelectPlan
    m.svodPlandetail.observeField("screenresponse", "onScreenresponse")
    m.svodPlandetail.observeField("onSubscriptionSuccess", "onSubscriptionSuccess")
    m.svodPlandetail.observeField("onSubscriptionFail", "onSubscriptionFail")
End Function

TVOD (Transactional Video On Demand)

To add TVOD Component in your Roku Scene xml and brs file.

Function onSelectTvodButton()
    channelContent = CreateObject("roSGNode", "ContentNode")
    channelContent.dspro_id = 

    m.tvodplanscreen = CreateChildNode("TVODPlansScreen")
    m.tvodplanscreen.channelObj = channelContent
    m.tvodplanscreen.observeField("onSelectPlan", "onSelectPlan")
    m.tvodplanscreen.observeField("purchasestatus", "onPurchaseStatus")
    m.tvodplanscreen.observeField("onSelectSkipForNow", "onSelectSkipForNow")
    m.tvodplanscreen.observeField("onTryWithDiffAcc", "onTryWithDiffAcc")
End Function

Function onSelectPlan()
    plan= message.getRoSGNode()
    planSelected = message.getData()
    if planSelected.product_type = "svod" and m.authcontrollerConfig.authenticationType = "tvod" then
        ' CloseScreen(m.tvodplanscreen)
        m.svodPlandetail = CreateChildNode("SVODPlanDetailScreen")
        m.svodPlandetail.plandata = planSelected
        m.svodPlandetail.observeField("screenresponse", "onScreenresponse")
        m.svodPlandetail.observeField("onSubscriptionSuccess", "onSubscriptionSuccess")
        m.svodPlandetail.observeField("onSubscriptionFail", "onSubscriptionFail")
        m.tvodPlandetail = CreateChildNode("TVODPlanDetailScreen")
        m.tvodPlandetail.plandata = planSelected
        m.tvodPlandetail.productid = planSelected._id
        m.tvodPlandetail.observeField("screenresponse", "onScreenresponse")
        m.tvodPlandetail.observeField("onSubscriptionSuccess", "onSubscriptionSuccess")
        m.tvodPlandetail.observeField("onSubscriptionFail", "onSubscriptionFail")
    end if 
End Function


Key Type Description
authenticationType Id Login, SVOD and TVOD
ClientId Id Client Id of auth0
CustomerTokenKey URL Custom token key URL
UserMetadata URL Custom token key URL
DomainName URL Domain name URL
scope string scope
grantType string Grant type
channel_id TVOD dpro_id (channel id) for channel you want to do changes