#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-запросы.