2012-01-23 91 views
2

有谁知道如何使用OAuth 2.0正确认证帐户,然后使用该认证令牌访问用户的YouTube帐户?.Net中的YouTube和OAuth 2.0

截至http://code.google.com/apis/youtube/2.0/developers_guide_protocol_oauth2.html末它说

支持YouTube数据API目前不支持,OAuth 2.0的谷歌数据客户端库。但是,一组不支持YouTube数据API的较新版Google API客户端库确实提供了OAuth 2.0支持。 因此,您可以选择使用下面列出的这些较新的库来获取OAuth 2.0功能,然后强制Google数据客户端库使用您获得的OAuth 2.0令牌。

我有我的应用程序成功完成OAuth 2.0运行过程中,我得到一个访问令牌,该令牌应该能够访问YouTube,但我不知道如何“迫使谷歌数据客户端库使用OAuth 2.0令牌“。

任何示例代码都会很好。

Liron

PS这是一个桌面应用程序。

回答

3

为此,您需要同时在Google数据应用(https://code.google.com/apis/console)上设置帐户,并使用youtube apis(http://code.google.com的/ apis /的YouTube /仪表板)。

然后你必须使用他们的oauth机制来验证谷歌数据api。类似于以下内容 - 这是从我们的一些代码中解脱出来的。 {}代码

//Create Client  
m_Client = new NativeApplicationClient(GoogleAuthenticationServer.Description, m_ClientID, m_ClientSecret); 
//Add Youtube scope to requested scopes 
m_Scopes.Add("https://gdata.youtube.com"); 
//Get Authentication URL 
authStateInitial = new AuthorizationState(m_Scopes); 
authStateInitial.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl); 
Uri authUri = m_Client.RequestUserAuthorization(authStateInitial); 

//Navigate to URL, authenticate get accessToken 
string accessToken = ...; 

string[] tokens = accessToken.Split(new char[] { '&' }); 
if(tokens.Length == 2) 
{ 
    authStateFinal = new AuthorizationState(m_Scopes); 
    authStateFinal.AccessToken = tokens[0]; 
    authStateFinal.RefreshToken = tokens[1]; 

    if(m_AuthStateInitial == null) 
    { 
    m_Client.RefreshToken(m_AuthStateFinal); 
    } 
    OAuth2Authenticator<NativeApplicationClient> authenticator = new OAuth2Authenticator<NativeApplicationClient>(m_Client, GetState); //GetState returns authStateInitial 
    authenticator.LoadAccessToken(); 
} 

然后,你必须同时使用访问令牌你从上面和YouTube开发重点得到了验证的YouTube API。 {code}

GAuthSubRequestFactory m_Authenticator = new GAuthSubRequestFactory(ServiceNames.YouTube, "Product Name"); 
    m_Authenticator.Token = AccessToken; 

    YouTubeService m_YouTubeService = new YouTubeService(m_Authenticator.ApplicationName, m_DeveloperKey); 
    m_YouTubeService.RequestFactory = m_Authenticator; 

希望这可以帮助别人。