Использование DotNetOpenAuth для получения контактов и календарей из учетной записи Google вместе - PullRequest
3 голосов
/ 13 июля 2011

Я пишу веб-приложение, используя ASP.NET MVC3 (C #), и мне нужно получить календари и контакты из учетных записей Google моего вошедшего в систему пользователя.

Поскольку я нехочу сохранить учетные данные пользователя, я использую OAuth (но не использую OpenID - я не хочу, чтобы мои пользователи входили в систему, используя свою учетную запись Google).

У меня есть следующий код для получения токена доступа ипозже используйте его для получения данных:

var google = new WebConsumer(GoogleConsumer.ServiceDescription, this.TokenManager);

// Is Google calling back with authorization?
var accessTokenResponse = google.ProcessUserAuthorization();
if (accessTokenResponse != null) {
    this.AccessToken = accessTokenResponse.AccessToken;
    //SAVE ACCESS TOKEN TO DATABASE
} else if (this.AccessToken == null) {
    // If we don't yet have access, immediately request it.
    GoogleConsumer.RequestAuthorization(google, GoogleConsumer.Applications.Contacts);
}

К сожалению, как вы можете видеть, я запрашиваю только авторизацию для контактов, а метод RequestAuthorization не позволяет мне устанавливать более одногоapplication.

Как я могу сделать это без необходимости нескольких разных токенов для разных областей?(Один для календаря, один для контактов и т. Д.)

Ответы [ 2 ]

1 голос
/ 17 декабря 2012

Области могут быть помещены в строку и разделены пробелами

РЕДАКТИРОВАТЬ: Добавлено из комментариев автора

Я использую следующий код при создании области действия string:

foreach (String s in Scopes) {
    sb.Append(String.Format("{0}", s));
}
scope = sb.ToString().Trim();

Где Scopes - это array из Strings (String[]), содержащее области, которые я хочу использовать.Когда вы запрашиваете авторизацию у Google, вы увидите список запрашиваемых сервисов, отображаемый на экране входа в систему.

1 голос
/ 14 июля 2011

Класс GoogleConsumer предоставляется вам как исходный код в проекте DotNetOpenAuth.ApplicationBlock. Пожалуйста, не стесняйтесь изменить его, чтобы сделать именно то, что вам нужно.

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