Как использовать WebRequest и HttpWebResponse в C# для перехода к URL-адресу аутентификации и входа на веб-сайт?
Я пытаюсь использовать MindMeister API (как описано здесь: http://www.mindmeister.com/developers/authentication) для создания настольного приложения. Пока что я могу создать URL-адрес для аутентификации, как описано в руководстве их разработчика, с ключом API, общим секретным ключом, который выглядит примерно так: http://www.mindmeister.com/services/auth/?api_key=abc123&perms=delete&api_sig=zxy987
Если я скопирую и вставлю этот URL в мой браузер, я перейду на страницу входа. Когда я вхожу в систему, он говорит, что мое приложение прошло проверку подлинности, и я могу продолжить работу с моим приложением, что затем позволяет мне начать использовать различные методы REST API. Я хотел бы перейти к этому URL-адресу аутентификации и программно войти в MindMeister без необходимости копировать и вставлять URL-адрес аутентификации в браузер.
До сих пор я пробовал что-то вроде этого
string authenticate
= @"http://www.mindmeister.com/services/auth/?"
+ api_key=abc123&perms=delete&api_sig=zxy987";
WebRequest request = WebRequest.Create(authenticate);
@"https://www.mindmeister.com/account/login");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
//response.ResponseURI == @"https://www.mindmeister.com/account/login"
WebRequest request2 = WebRequest.Create(response.ResponseUri);
request2.Credentials = new NetworkCredential("username", "password");
HttpWebResponse response2 = (HttpWebResponse)request2.GetResponse();
но это не работает.
Могу ли я получить некоторые рекомендации о том, как достичь того, чего я хочу? У меня почти нет опыта работы с WebRequest или HttpWebResponse, так как я просто копировал и вставлял другие решения в Stackru.
1 ответ
Из документации видно, что вход в систему таким способом официально не поддерживается. Имейте в виду, что большинство служб, работающих с ключом API, могут и будут отзывать этот ключ, если им не нравится способ его использования.
Однако логин может не понадобиться каждый раз, когда пользователь запускает ваше приложение.
Похоже, что если вы получите frob
с использованием mm.auth.getFrob
метод и передать это в качестве параметра с логином, который вы могли бы использовать тот же frob
на mm.auth.getToken
метод. Затем вы можете сохранить этот токен где-нибудь на рабочем столе пользователя и использовать его для использования методов в будущем.
Это должно работать до тех пор, пока пользователь активно не отменит разрешения для вашего приложения.