OAuth2 с API на Google Клиент 1.8.1

Използвам API на клиента на Google в .NET уеб приложение – но трябва да актуализирам до най-новата версия (както за да използвам най-новия код, така и за да загубя нуждата от DotNetOpenAuth.dll.) Най-новата версия (1.8. 1) има напълно преработен OAuth интерфейс (с помощта на google.apis.auth) и изглежда дори не мога да започна с него.

Преди това бях написал код, който се справяше с генерирането на AuthorizationURL (ако е необходимо) и създаването на обекти IAuthenticator и IAuthorizationState - съхранявайки маркера за опресняване в sql база данни, ако е необходимо. Също така бях на път да извлека "UserInfo" за потребителя, ако е необходимо (след като бъде удостоверен.)

Сега - не ми е ясно как да се справя с генерирането на AuthURL (трябва ли да го направя 100% ръчно?) и как/какво трябва да предам на BaseClientService.Initializer, когато работя с клиентски API (като Google Карам.)

Освен това - по-рано написах методи за "съхраняване" и "извличане" на идентификационни данни от базата данни - сега изглежда, че ще трябва да напиша клас, базиран на IDataStore? Но не съм сигурен дали това изобщо е правилно (да не говорим за намиране на приличен пример/документ навсякъде.)

И накрая - изглежда, че google.apis.auth не обработва нищо по отношение на UserInfo - трябва да взема google.apis.oauth2 - но този .dll има дори ПО-МАЛКО документация/примерен код там.

Някакви съвети откъде да започна? Примерният код на google.apis изглежда приличен за изпълнение на основни API задачи, но цялата информация за Oauth2 е много проста, използва файлово съхранение на данни и изглежда замазано.

Благодаря!


person Bill    schedule 28.04.2014    source източник
comment
Ако сте в ада на SDK DLL, може би си струва да обмислите да изхвърлите всичко и да направите свои собствени OAuth http извиквания. Ще се изненадате колко е просто.   -  person pinoyyid    schedule 29.04.2014


Отговори (1)


Първо, разгледайте https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth. Цялата документация, от която може да се нуждаете, е там и ако нещо липсва, уведомете ни!

Прав сте, вече имате внедряване на FileDataStore и ние планираме да създадем и EFDataStore за следващото издание.

person peleyal    schedule 28.04.2014
comment
Не ми помага много - тъй като това е приложение за уеб формуляри - не MVC приложение (всъщност - съществуващата интеграция на Google API беше направена в библиотека от класове.) Експериментирах с GoogleWebAuthorizationBroker - и той пренасочва автоматично - но изглежда, че използва фиксиран URL адрес за ПРЕНАСОЧВАНЕ. - person Bill; 28.04.2014
comment
изглежда, че много прости/полезни функции са скрити. Мога да генерирам URL адрес за удостоверяване с помощта на GoogleAuthorizationCodeFlow - но изглежда няма начин да принудя подкана за достъп без замяна на потока с персонализиран такъв. Също така - всичко изглежда асинхронно - което има смисъл, но изглежда представлява значителни предизвикателства при опит за просто базирано на уебсайт решение. - person Bill; 28.04.2014
comment
peleyal - тъй като бяхте така любезен да отговаряте на въпросите ми досега - надявам се, че можете да дадете насоки по един елемент. Той се върти около различните async oauth2 извиквания, които са част от API. Какъв е правилният начин да ги извикате синхронно от уеб приложение? Обвих асинхронните методи (които използват await) със синхронни версии, които връщат стойност, използвайки .Result. Това блокира, освен ако не използвам .ConfigureAwait(false) - но виждам загадъчни предупреждения, че НЕ правя това... - person Bill; 29.04.2014
comment
Тази проба помага ли ви? code.google.com/p/google-api-dotnet-client/source/browse/ Това е ASP (не MVC) проба за Tasks API. Използва синхронизиране на повиквания... - person peleyal; 29.04.2014