Как использовать 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 метод. Затем вы можете сохранить этот токен где-нибудь на рабочем столе пользователя и использовать его для использования методов в будущем.

Это должно работать до тех пор, пока пользователь активно не отменит разрешения для вашего приложения.

Другие вопросы по тегам