Как открыть соединение с хостом, использующим GoogleOauth2Service

#c# #sockets #single-sign-on

#c# #сокеты #единый вход в систему

Вопрос:

Я использую сокет для открытия соединения с хостом, использующим единый вход Google, однако я не знаю, как предоставить свои учетные данные Google и отправить их с сокетом для доступа к домашней странице.

публичный статический void Start() {

         byte[] bytes = new byte[2097152];
        try
        {
            IPHostEntry host = Dns.GetHostEntry("myhost.net");
            IPAddress ipAddress = host.AddressList[0];
            IPEndPoint remoteEP = new IPEndPoint(ipAddress, 80);

            Socket sender = new Socket(ipAddress.AddressFamily,
            SocketType.Stream, ProtocolType.Tcp);

            try
            {
                sender.Connect(remoteEP);

                Console.WriteLine("Socket connected to {0}",
                    sender.RemoteEndPoint.ToString());

                // Encode the data string into a byte array.    
                byte[] msg = Encoding.ASCII.GetBytes("GET /Home HTTP/1.1rn"   "Host: myhost.netrn"   "Content-Length: 0rn"   "rn");
                int bytesSent = sender.Send(msg);

                // Receive the response from the remote device.    
                int bytesRec = sender.Receive(bytes);
                Console.WriteLine("Echoed test = {0}",
                    Encoding.ASCII.GetString(bytes, 0, bytesRec));

                // Release the socket.    
                sender.Shutdown(SocketShutdown.Both);
                sender.Close();
            }
            catch (ArgumentNullException ane)
            {
                Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
            }
            catch (SocketException se)
            {
                Console.WriteLine("SocketException : {0}", se.ToString());
            }
            catch (Exception e)
            {
                Console.WriteLine("Unexpected exception : {0}", e.ToString());
            }
        }
        catch (Exception e) {

            Console.WriteLine(e.ToString());

        }
 

Комментарии:

1. Почему вы используете сокеты вместо HTTP или веб-метода? Веб-страница ожидает формат HTTP, и TCP не будет автоматически добавлять требуемые теги в HTTP.

2. Я по-прежнему получаю в качестве ответа от HTML-данных сервера всплывающее окно, требующее аутентификации Gmail, но я не знаю, как отправить учетные данные.

3. Вы читали следующее: support.google.com/a/answer/60224?hl=en

4. Я думаю, что должно быть что-то, что необходимо предоставить в начале, прежде чем делать HTTP-запросы.

5. Я думаю, что должно быть что-то, что необходимо предоставить в начале, прежде чем делать HTTP-запросы.