YouTube и OAuth 2.0 в .Net - PullRequest
       20

YouTube и OAuth 2.0 в .Net

2 голосов
/ 23 января 2012

Кто-нибудь знает, как правильно аутентифицировать учетную запись, используя OAuth 2.0, а затем использовать этот токен авторизации для доступа к учетной записи YouTube пользователя?

В конце http://code.google.com/apis/youtube/2.0/developers_guide_protocol_oauth2.html написано

Клиентские библиотеки Google Data, которые поддерживают API данных YouTube, в настоящее время не поддерживают OAuth 2.0.Однако более новый набор клиентских библиотек API Google, которые не поддерживают API данных YouTube, обеспечивают поддержку OAuth 2.0.Таким образом, есть возможность использовать эти более новые библиотеки, которые перечислены ниже, для их возможностей OAuth 2.0, а затем заставить клиентскую библиотеку Google Data использовать полученные маркеры OAuth 2.0.

У меня есть приложение, успешно запущенное через процесс OAuth 2.0, и я получаю токен доступа, который должен иметь возможность доступа к YouTube, но я не знаю, как "принудительно заставить данные Google"клиентская библиотека для использования маркера (ов) OAuth 2.0 ".

Подойдет любой пример кода.

Liron

PS Это для настольного приложения.

1 Ответ

3 голосов
/ 23 февраля 2012

Для этого вам нужно настроить учетную запись в приложениях данных Google (https://code.google.com/apis/console) и с YouTube YouTube) (http://code.google.com/apis/youtube/dashboard).

Затем вы должны аутентифицировать API данных Google, используя их механизмы oauth. Что-то вроде следующего - это распотрошено из некоторого кода, который мы имеем. {Код}

//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();
}

Затем вы должны аутентифицировать api youtube, используя как токен доступа, который вы получили сверху, так и Ключ разработчика youtube. {Код}

    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;

Надеюсь, это кому-нибудь поможет.

...