2015-09-17 4 views
2

Ситуация выглядит следующим образом:Получить regToken от GSResponse

Я посылаю запрос входа в систему, используя метод showLoginUI, а затем, после выбора поставщика (Twitter, г + и т.д.), приложение переходит к onError обратного вызова моего GSLoginUIListener с ошибкой «Регистрация в ожидании регистрации». До этого момента все в порядке. Проблема заключается в том, когда я пытаюсь создать еще один GSRequest с помощью метода «accounts.setAccountInfo», как показано в следующем коде:

GSRequest setAccountInfoRequest = new GSRequest(getString(R.string.gigya_api_key),"accounts.setAccountInfo"); 

В качестве параметра, я считаю, что я должен добавить regToken, но где я могу получить? В IOS SDK, есть объект Error (который вы получаете от GSResponse, что позволяет получить его так:

token = error.userInfo["regToken"] 

Но нет ничего подобного на Android SDK, с GSResponse я просто не могу получите код ошибки, сообщение об ошибке и сведения об ошибке. Итак, вкратце, как я могу получить regToken, который мне нужен для моего запроса? В the documentation не входит подробная информация о фактической реализации, и я не видел никаких примеров.

ответ

0

В отличие от SDK для iOS и .NET, SDK для Android не имеет публичного раскрытия или документированного класса GSRequest, поэтому вызывая запрос так, как вы делаете, я t нецелесообразно.

Вместо этого вы должны использовать GSAPI.sendRequest с GSResponseListener. GSResponseListener будет иметь объект ответа с методом getData, который можно вызвать, чтобы получить объект словаря всех параметров, возвращенных из запроса.

Пример того, как это можно сделать, приведен в нашем Gigya CS Android demo, размещенном на GitHub, и его можно изучить в файле [email protected].

public void refreshView() { 
    GSAPI gigya = GSAPI.getInstance(); 
    final TextView statusText = (TextView) rootView.findViewById(R.id.status_value); 
    final TextView nameText = (TextView) rootView.findViewById(R.id.name_value); 
    final TextView emailText = (TextView) rootView.findViewById(R.id.email_value); 
    final ImageView avatarView = (ImageView) rootView.findViewById(R.id.avatar); 

    if (gigya.getSession() != null){ 
     if (gigya.getSession().isValid()) { 
      MainActivity parent = (MainActivity) getActivity(); 
      GSObject user = parent.getUser(); 

      // Retrieve the user if it's not set. (Reloaded app with active session) 
      if (user == null) { 
       GSResponseListener resListener = new GSResponseListener() { 
        @Override 
        public void onGSResponse(String method, GSResponse response, Object context) { 
         try { 
          if (response.getErrorCode()==0) { // SUCCESS! response status = OK 
           MainActivity parent = (MainActivity) getActivity(); 
           Log.w("Gigya-Android-Demos", "Successfully set user"); 
           parent.setUser(response.getData()); 
           setLoggedIn(statusText, nameText, emailText, avatarView, response.getData()); 
          } else { // Error 
           Log.w("Gigya-Android-Demos", "GSResponse: 'getAccountInfo' returned an error"); 
           Log.w("Gigya-Android-Demos", response.getErrorMessage()); 
          } 
         } catch (Exception ex) { ex.printStackTrace(); } 
        } 
       }; 
       GSAPI.getInstance() 
         .sendRequest("accounts.getAccountInfo", null, resListener, null); 
      } else { 
       // Grab the user data 
       setLoggedIn(statusText, nameText, emailText, avatarView, user); 
      } 

     } else { 
      setLoggedOut(statusText, nameText, emailText, avatarView); 
     } 
    } else { 
     setLoggedOut(statusText, nameText, emailText, avatarView); 
    } 
} 

public void setLoggedOut(TextView status, TextView name, TextView email, ImageView avatar) { 
    status.setText(getString(R.string.logged_out)); 
    name.setText(getString(R.string.null_value)); 
    email.setText(getString(R.string.null_value)); 
    setUnknownAvatar(avatar); 
} 

public void setLoggedIn(TextView status, TextView name, TextView emailView, ImageView avatar, GSObject user) { 
    status.setText(getString(R.string.logged_in)); 
    try { 
     GSObject profile = user.getObject("profile"); 
     String first = profile.getString("firstName"); 
     String last = profile.getString("lastName"); 
     String email = profile.getString("email"); 
     if (profile.containsKey("photoURL")) { 
      setAvatar(avatar,profile.getString("photoURL")); 
     } else { 
      setUnknownAvatar(avatar); 
     } 
     name.setText(first + " " + last); 
     emailView.setText(email); 
    } catch (Exception ex) { 
     Log.w("Gigya-Android-Demos", "Something went horribly wrong with the user!"); 
     ex.printStackTrace(); 
    } 
} 

Вы должны обратить внимание на использование getData() и GSObject классов на протяжении приведенного примера. Используя этот способ запроса, вы должны иметь возможность проверить данные ответа, включая regToken.

Смежные вопросы