Я пытаюсь использовать API Google + для доступа к информации для аутентифицированного пользователя. Я скопировал код из одного из образцов, который работает нормально (ниже), однако у меня возникают проблемы с тем, чтобы он работал путь я мог повторно использовать маркер при запуске приложений.
Я попытался захватить свойство «RefreshToken» и использовать provider.RefreshToken ()
(среди прочего) и всегда получать ответ 400 Bad Request
.
Кто-нибудь знает, как это сделать, или знает, где я могу найти некоторые образцы? Сайт Google Code , похоже, не охватывает это: - (
class Program
{
private const string Scope = "https://www.googleapis.com/auth/plus.me";
static void Main(string[] args)
{
var provider = new NativeApplicationClient(GoogleAuthenticationServer.Description);
provider.ClientIdentifier = "BLAH";
provider.ClientSecret = "BLAH";
var auth = new OAuth2Authenticator(provider, GetAuthentication);
var plus = new PlusService(auth);
plus.Key = "BLAH";
var me = plus.People.Get("me").Fetch();
Console.WriteLine(me.DisplayName);
}
private static IAuthorizationState GetAuthentication(NativeApplicationClient arg)
{
// Get the auth URL:
IAuthorizationState state = new AuthorizationState(new[] { Scope });
state.Callback = new Uri(NativeApplicationClient.OutOfBandCallbackUrl);
Uri authUri = arg.RequestUserAuthorization(state);
// Request authorization from the user (by opening a browser window):
Process.Start(authUri.ToString());
Console.Write(" Authorization Code: ");
string authCode = Console.ReadLine();
Console.WriteLine();
// Retrieve the access token by using the authorization code:
return arg.ProcessUserAuthorization(authCode, state);
}
}
-121--755839-
У меня мало вопросов относительно Socket Communication в Android.
1) Я разработал серверное сокетное приложение для Android, которое прослушивает 8888 портов.
а) Когда я размещаю свой сервер на эмуляторе, я не могу связаться с ним через клиентское приложение, которое у меня есть на компьютере, так как оба приложения (Emulator & Client) находятся на моем ноутбуке и в одной сети, я думаю, что они должны иметь возможность общаться друг с другом.
b) Когда я развертываю одно и то же серверное приложение на моем мобильном устройстве Android и пытаюсь передать его через то же клиентское приложение, что и на моем компьютере, клиентское приложение предоставляет исключение тайм-аута, поскольку не может связаться с ним.
Мой первый вопрос: Как протестировать серверное/клиентское сокетное приложение с помощью Android-устройства Emulator & 1? Можно ли использовать клиентское сокетное приложение компьютера для тестирования серверного сокета?
* * У меня есть клиентское сокетное приложение для другого приложения, поэтому нет проблем с клиентским приложением.
2) Мой второй вопрос - тестировать мое серверное приложение на android-устройстве, нужно ли переслать нужный порт? a) Для эмулятора: Как переслать порт? b) Для устройства: Как можно переслать порт? c) Могу ли я переслать порт программно?
* * Просто для информации:
Я использую Eclipse в качестве инструмента разработки android.
* * МОЙ код сервера, поскольку также могут возникнуть проблемы с моим кодом сокета сервера.
Socket socket = null;
DataInputStream dataInputStream = null;
DataOutputStream dataOutputStream = null;
ServerSocket serverSocket = null;
try
{
serverSocket = new ServerSocket(SERVERPORT);
System.out.println("Listening :" + SERVERPORT);
System.out.println("Server IP:" + SERVERIP);
}
catch (Exception e)
{
e.printStackTrace();
}
while(true)
{
try
{
socket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println("ip: " + socket.getInetAddress());
String str = in.readLine();
System.out.println("message Received: " + str);
}
catch (Exception e)
{
e.printStackTrace();
}
finally
{
if( socket!= null)
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if( dataInputStream!= null)
{
try
{
dataInputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
if( dataOutputStream!= null)
{
try
{
dataOutputStream.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
Отредактировано: Очень интересная часть состоит в том, что если я установлю порт 8080 PC Client Socket App действительно подключаться к Android App на моем Android устройстве, но я не получаю сокет на моем сервере или данные, которые я посылаю. Ничего не происходит после ссылки = > socket = serversocket.accept ();
Также я установил разрешение в манифесте.