Now You Can Have Better Youtube Integration with Ruby on Rails
I recently wanted to upload, edit, update and delete a video directly on youtube from my rails application. This can be achieved by YouTube Data API that allows application to perform functions normally executed on youtube.
Step 1 : Demystifying Authentication with Google AuthSub
Google provides an authentication service to those web applications that need to access services protected by a user’s Google account. I chose Google’s ‘AuthSub’ scheme for this. This also provides a high level of security to web application.
The AuthSub interface provides several methods for acquiring and managing authorization tokens. Once a web application has received a token, it can request access to a Google service.
To obtain an authentication token, submit an HTTP POST request to the following URL:
https://www.google.com/accounts/AuthSubRequest?next=http%3A%2F%2Fwww.example.com%2Fupload.html&scope=http%3A%2F%2Fgdata.youtube.com&session=0&secure=0
Setting session parameter to 1 indicates that the single-use token can be exchanged for a session token.
AuthSubSessionToken is a method that allows the web application to exchange a single-use token for a session token. I used a gem ‘gdata’ to convert the token into a session token.
client = GData::Client::DocList.new client.authsub_token = params[:token] session[:token] = client.auth_handler.upgrade()
Session token allows the application to make unlimited calls to the Google service. When using session tokens, your application should store the session token for each user rather than requesting a new one each time it needs to access a Google service. For other token management options, see Working With AuthSub.
Step 2 : Getting the Youtube Developer Key
A developer key is required that identifies the YouTube developer that is submitting an API request. A client ID identifies your application for logging and debugging purposes. Please visit here to obtain a developer key and client ID.
Step 3 : Improving the Youtube Model Plugin
“youtube-model” is a plugin that provides youtube video uploading functionality. That was a good start.
I forked the plugin and updated it with few methods to get the rest of the functionality done. Each method is explained here.
1. uploaded_by_user
A method uploaded_by was provided in the plugin to retrieve all the videos of the user but it receives username as a parameter. So I added a method uploaded_by_user that receives the session token and solves our purpose.
YouTube.uploaded_by_user(session[:token])
2. update_video
The video can be updated by using this method passing video id, session token and params hash as parameters.
YouTube.update_video(params[:id], session[:token], params[:you_tube_entry])
3. delete_video
The video can also be deleted if uploaded at the user’s youtube account by passing video id and token as a parameter.
YouTube.delete_video(params[:id], session[:token])
4. video_status
This method helps finding out the status of uploaded video.
s = YouTube.video_status(session[:token], params[:id]) @status = s.control.state.name
The changes to the plugin have been merged in the master and you can download everything here. I will really appreciate your feedback and suggestions to make this plugin better.
Vibha Chadha is working with Vinsol as a rails developer. When she is not writing code, she likes to read “geek” books and listen to some “good” music.
No related posts.
Related posts brought to you by Yet Another Related Posts Plugin.
-
campbell05
-
Leoxray
