- Автор flashr сентября 17, 2010
Всегда не любил выдачу JSON за то, что она подразумевает обработку в JS на стороне клиента, а значит много гемора для программиста. Но оказывается существует уже и полноценное решение делающее JSON не сложнее обычной XML сериализации. Речь про
newtonjson.dll, написанную на .Net и неплохо документированную. Отдельно порадовала возможность конвертации конечного листа дерева в произвольный тип путем простого вызова типа
cursor["leafname"].Value<long>();. Вот бы все значения ячеек для датагридов тоже имели такой шаблонизатор, чтобы не прописывать каждый раз приведение типа.
Пример JSON сериализатора в .Net для результатов выдаваемых гуглом при поисковых запросах через AJAX API -
можно найти в последних изменениях blogsapiPS: отдельно отмечу, что готов взять программиста на частичную занятость для поддержания моих хобби проектов и развития некоторых идей.
[Далее]
Метки: BlogsAPI | Code | Csharp
- Автор flashr сентября 2, 2010
Сегодня расскажу как реализовывается работа приложения через OAuth, если пользователь передает просто логин и пароль.
Прежде всего потребуется класс OAuthUtility,
код которого есть в blogsapi.
На первом этапе мы проверяем производили ли мы аутентификацию пользователя ранее. Если нет, то обращаемся к твиттеру с логином и паролем, соответствующему нашему приложению (tokens.ConsumerKey,tokens.ConsumerSecret). Получаем назад ключ(response.Token), по которому мы можем построить запрос (OAuthUtility.BuildAuthorizationUri(response.Token)) на получение уникальных логина и пароля для пользователя нашего приложения. Назад возвращается страница, на которой пользователю предлагается ввести логин и пароль, но так как мы не хотим тревожить пользователя, то вводим их за него, незабывая извлечь со страницы authenticity_token. Если логин и пароль правильны, то нам возвращается уникальный PIN, который пользователь должен потом передать нашему приложению, в качестве единоразового пароля для получения постоянного пароля. Опять же парсим страницу вручную, чтобы не тревожить пользователя. И в завершение делаем запрос OAuthUtility.GetAccessToken, чтобы по разовому паролю наше приложение получило постоянный пароль. И сохраняем результат, чтобы больше не повторять этих действий.
В итоге наше приложение, чтобы сделать запрос от лица пользователя передает не логин и пароль, а аж 4 строчки, соответствующие 2м логинам и паролям от них.
Основная выгода - безопастность, и то, что эти строчки намного сложнее чем первоначальные логин и пароль пользователя, что гарантирует сложность их подбора. Но с другой стороны, они не имеют срока давности, поэтому зная их с легкостью можно выполнить действия от лица пользователя-приложения, в отличии от куков или сессий для авторизованных клиентов сайтов.
И общая схема, демонстрирующая весь ужас того, во что превращается простая ранее операция по выполнению действий при помощи логина и пароля:

Код самой функции "залогинивания" в твиттер.
Далее...
Метки: BlogsAPI | Code | Twitter
- Автор flashr августа 31, 2010
Как показывает практика - пиздецы приходят незаметно. Кто с этим несогласен может почитать про вчерашнюю
недоступность сервисов Google для России. Благодаря этому на второй план отошел второй пиздец, который наступил сегодня - наступил
oauthapocolypse, заблокировавший все функции твиттера через Basic аутентификацию. Ранее это было планировалось сделать в середине лета, потом перенесли на 31 августа. В ближайшее время обновлю библиотеку BlogsAPI так, чтобы функции твиттера в ней опять заработали.
И последнее, чего никто не ожидал - наступление последнего дня лета и заметного похолодания.
[Далее]
Метки: BlogsAPI | Google | Twitter
- Автор flashr марта 25, 2010
Скончался один из первопроходцев сокращения ссылок в интернете - Tr.im. О его скорой смерти было известно давно, еще когда твиттер переключился по умолчанию с него на Bit.ly, но только на днях сервис окончательно перестал функционировать и опубликовал список некоторых других популярных сокращателей. По этому случаю обновил библиотеку BlogsAPI, добавив следующие классы сокращения:
[Далее]
Метки: Code | BlogsAPI