Хотите запросить авторизацию в gmail с помощью dotnetOpenAuth - PullRequest
1 голос
/ 03 марта 2012

Я использую dotnetOpenAuth.Я хочу запросить авторизацию у пользователя.

Нужно ли сначала использовать openId?

Не удается найти достойный туториал.Кто-нибудь может помочь?

Попробовал этот код безуспешно.В любом случае, мне кажется, что я не запрашиваю область действия Gmail при запросе аутентификации, поэтому я запутался

public void PrepareAuthorizationRequest(Uri authCallbakUrl)
{
    var consumer = new WebConsumer(GoogleConsumerConsts.ServiceDescription, mConsumerTokenManager);

    // request access
    consumer.Channel.Send(consumer.PrepareRequestUserAuthorization(authCallbakUrl, null, null));

    throw new NoRedirectToAuthPageException();
}

public ProcessAuthorizationRequestResponse ProcessAuthorizationRequest()
{
    ProcessAuthorizationRequestResponse response;
    // Process result from the service provider
    var consumer = new WebConsumer(GoogleConsumerConsts.ServiceDescription, mConsumerTokenManager);
    var accessTokenResponse = consumer.ProcessUserAuthorization();

    // If we didn't have an access token response, this wasn't called by the service provider
    if (accessTokenResponse == null)
        response = new ProcessAuthorizationRequestResponse
                       {
                           IsAuthorized = false
                       };
    else
    {
        // Extract the access token
       string accessToken = accessTokenResponse.AccessToken;
       response = new ProcessAuthorizationRequestResponse
        {
            IsAuthorized = true,
            Token = accessToken,
            Secret = mConsumerTokenManager.GetTokenSecret(accessToken)
        };
    }
    return response;
}

private string Test2()
{
    // Process result from linked in
    var google = new WebConsumer(GoogleConsumerConsts.ServiceDescription, mConsumerTokenManager);
  //  var accessToken = GetAccessTokenForUser();
    var accessToken = String.Empty;

    // Retrieve the user's profile information
    var endpoint = GoogleConsumerConsts.GetGmailFeedsEndpoint;// new MessageReceivingEndpoint("http://api.linkedin.com/v1/people/~", HttpDeliveryMethods.GetRequest);
    var request = google.PrepareAuthorizedRequest(endpoint, accessToken);
    var response = request.GetResponse();
    return (new StreamReader(response.GetResponseStream())).ReadToEnd();
}

1 Ответ

0 голосов
/ 04 марта 2012

Нет, вам не нужно использовать OpenID, если вы просто хотите получить доступ к Gmail пользователя. OpenID предназначен для аутентификации пользователя. OAuth предназначен для доступа к данным пользователя.

Вам необходимо включить параметр scope в запрос авторизации, как описано в этом вопросе: Добавление областей в запрос авторизации OAuth 1.0 с помощью DotNetOpenAuth .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...