Paid Roku Channels: Registration & Linking with WordPress
Instant TV Channel is pleased to offer a
free WordPress example plugin
that demonstrates how to provide Roku Registration & Linking services to WordPress-based web sites.
Registration & Linking is a technique that allows you to register
customers before they are permitted to have access to your Roku channel.
Instant TV Channel's implementation of Registration & Linking uses
Amazon S3 buckets to link your customer's account on your web site
with your customer's Roku player.
The WordPress plugin provided by Instant TV Channel manages your S3 buckets automatically,
you only need to provide the plugin with your bucket names and keys.
Registration & Linking can be used together
with any WordPress payment-processing plugin to implement
a paid Roku channel.
For example, a WordPress-based web site could
require customers to enter a payment,
make a donation,
or sign up for a subscription before
being granted access to the page containing the
Registration & Linking widget or shortcode.
Step-by-Step Configuration Directions:
Go to the S3 section of your AWS (Amazon Web Services) control panel and create three new S3 buckets.
Name them something like
You will use the bucket names in several of the following steps.
The bucket Region must be set to "US East (N. Virginia)".
Any other region may cause the registration and linking process to fail.
These should be private buckets that are not web enabled.
These buckets will only be used for Roku player registration and
should not be used for Instant TV Channel Configuration File or Content storage.
Use only lower-case characters, digits, and dashes in your bucket name.
Instant TV Channel does not support the use of upper-case characters or other symbols in bucket names.
Good Bucket Name: registration-bucket
Good Bucket Name: reg123
Bad Bucket Name: registration.bucket(contains unsupported period character ".")
Bad Bucket Name: reg+123(contains unsupported plus character "+")
Bad Bucket Name: Reg-Bucket(contains upper-case characters "R" and "B")
Go to the IAM (Identity and Access Management) section of your AWS control panel
where we will create a new IAM identity and keys.
Click the Policies link on the left side of the page.
Click the Create Policy button near the top of the page.
Click the JSON tab, and erase the sample lines of JSON text.
Copy the security policy below and paste it into the JSON text box.
with the names of the three buckets you just created.
Click the Review policy button near the bottom of the page.
An error message will be displayed if there are any errors in the JSON text.
After correcting the errors, click the Review policy button again.
Provide a Policy Name, for example "my-reglink-policy".
Click the Create policy button near the bottom of the page.
Click the Groups link on the left side of the page.
Click the Create New Group button near the top of the page.
Provide a group name, for example "my-reglink-group",
then click the Next Step button near the bottom of the page.
The "Attach Policy" page is displayed.
Scroll down the list of policies until the "my-reglink-policy" policy that you just created is visible,
or type the name of your newly created policy in the "Filter" box.
You may need to scroll through a large number of built-in AWS policies until your policy is visible.
Click the check-box to the left of your policy name,
making sure that no other check-boxes are checked,
then click the Next Step button near the bottom of the page.
Click the Create Group button near the bottom of the page.
Click the Users link on the left side of the page.
Click the Add User button near the top of the page.
Enter a new user name,
for example "my-reglink-user".
Select an Access type of "Programmatic access".
Click the Next: Permissions button near the bottom of the page.
Click the check-box to the left of the previously created Group name,
then click the Next: Tags button near the bottom of the page.
Click the Next: Review button near the bottom of the page.
Click the Create user button near the bottom of the page.
Click the Show link beneath "Secret access key" or
click the Download .csv button to copy and save the Access Key ID and Secret Access Key.
These keys will be used exclusively for your Registration and Linking buckets.
They cannot be used to access any other AWS buckets or services.
Make sure that you save the keys for future use,
Amazon will not display them again.
If you misplace the keys you will have to create a new IAM user.
After copying the Security Credentials, click the Close button near the bottom of the page.
At this point we have a new IAM user that is a member of a new IAM group -
the user has the keys and the group has the security policy.
The keys for this IAM user can be used in the Roku channel to access the S3 Registration and Linking buckets specified by the security policy.
If you want to use two registration widgets with different settings
for the same channel and website,
also download the wp_irchan2.zip file from
This can be used, for example, to have both a paid registration widget with
unlimited renewals and a free-trial registration widget with no renewals
that expires in 30 days.
Both the wp_irchan and wp_irchan2 zip files must be installed in order to
use both registration widgets on the same website.
You can also install the wp_irchan2 zip file later,
it is not required if only a single registration widget is needed.
Install the zip file(s) into your WordPress server's wp-content/plugin directory.
Activate the plugin and install the widget as you would any other WordPress plugin or widget.
The shortcode for the widget is [irchan].
If you installed two plugins, the shortcode for the second widget is [irchan2].
Make sure to place the widget on a page or pages that are only available to paid subscribers.
Configure the widget by clicking on Instant TV Channel in the main WordPress Settings menu.
Optional Partner ID -
this must be identical to the Partner ID you have specified on the Instant TV Channel Registration page for the channel.
Registration Bucket Name -
The name of the S3 Registration Bucket that you previously created.
Linking Bucket Name -
The name of the S3 Linking Bucket that you previously created.
Account Bucket Name -
The name of the S3 Account Bucket that you previously created.
Access Key ID -
The Access Key ID for the Registration & Linking IAM account you previously created.
Secret Access Key -
The Secret Access Key for the Registration & Linking IAM account you previously created.
Widget Title -
Appears above the widget on your WordPress pages.
Widget Button Label -
The text that appears on the widget's button.
Success Message - Text that is displayed if linking is successful.
Failure Message - Text that is displayed if linking fails.
This will occur if the Roku Registration Code is incorrectly entered,
or if any of the bucket names or keys are incorrect.
Renewal Limit Message - Text that is displayed if a user
attempts to exceed the maximum allowed number of renewals.
Maximum Number of Renewals - The maximum number of
subscription renewals for each subscriber.
0 allows no renewals.
Blank allows unlimited renewals.
Renewals are tracked by counting the linking files,
so do not delete expired files from the S3 Linking bucket if
Maximum Number of Renewals is not blank.
Player Limit Message - Text that is displayed if a user
attempts to exceed the maximum allowed number of registered
Default Maximum Number of Players - The number of
Roku players that a subscriber is permitted to have.
Typical values are 1 through 5.
This value can be overridden on a per-subscriber basis.
Default Registration Lifetime - The number of minutes
until the registration expires,
starting from when the Roku player is registered.
If 0 or blank, the registration will never expire.
Default Command - A command to execute on the user's
Roku player. Can be overridden on a per-player basis.
Delete Token - Delete the token from the player and
force re-registration as soon as the registration-protected
area of the channel is entered.
No Command - Do nothing. This is the typical setting.
Debug Widget - Should always be set to No for production
Displays trouble-shooting information beneath the widget that can
be helpful with S3 bucket configuration problems.
Go to the channel's Registration page on the main Instant TV Channel web site.
This is only available for a Commercial channel.
Under Registration Control:
Change Registration Service Provider to SELF.
Enter the same Optional Partner ID (if any) that you used in
the WordPress plugin.
this will also be the folder or directory name in your S3 buckets
that will contain the registration, linking, and account files for this channel.
If not present then the registration, linking, and account files will be
located at the top-level of your buckets.
Under AWS S3 Buckets:
Enter the Registration and Linking bucket names
and keys that you created earlier.
Click the TEST S3 BUCKETS button and verify that
the S3 Bucket Tests Passed message is displayed.
Under Registration Screen:
Change the text for Focal2 to contain the URL for the
registration page on your WordPress site.
Customize anything else.
The EraseDeviceToken setting in the Theme Editor
allows you to erase the channel's Registration & Linking device
token in a player.
If set to yes,
players will always have to go through the Registration & Linking process,
even if they have previously been registered.
Any player that attempts to access a protected section of your Roku channel
will have its device token erased,
so you usually only want to have this set to yes for testing,
and set to no for a production channel.
Please read this
about the Registration, Linking, and Account buckets
before attempting to delete any files!
Technical details about Instant TV Channel's
implementation of Roku's
Device Registration & Linking specification are