API Google +: Как использовать RefreshTokens, чтобы избежать запроса доступа при каждом запуске приложения?

Я пытаюсь использовать 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-

Android - Серверный Socket У меня мало вопросов относительно Socket Communication в Android. 1) Я разработал серверное сокетное приложение для Android, которое прослушивает порт 8888. а) Когда я размещаю свой сервер на эмуляторе, я не могу...

У меня мало вопросов относительно 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 ();

Также я установил разрешение в манифесте.


5
задан KhanZeeshan 17 September 2011 в 13:26
поделиться