Tengo un problema muy extraño para recuperar los datos básicos del perfil de un usuario que se loguea en mi aplicación a través de Google+. Los datos en cuestión son nombre completo, fecha de nacimiento e ID. Y digo extraño porque lo curioso es que en ocasiones funciona y en otras no, arrojándome un NETWORK ERROR.
Tengo definido el constructor PlusClient:
Código:
mPlusClient = new PlusClient.Builder(this, this, this)
.setScopes(Scopes.PLUS_LOGIN, Scopes.PLUS_PROFILE)
.setVisibleActivities("http://schemas.google.com/AddActivity", "http://schemas.google.com/BuyActivity")
.build();
Cuando la activity se inicia:
Código:
@Override
protected void onStart(){
super.onStart();
mPlusClient.connect();
}
Y en el método onConnected(), una vez el usuario está conectado, llamo a un método para recuperar los datos que necesito de esta forma:
Código:
private void obtenerDatosUsuario()
{
mPlusClient.loadPerson(this, "me");
Person mePerson = mPlusClient.getCurrentPerson();
String idUser, nombreUser, urlfotoUser, urlperfilUser;
String descUser, fechaUser, sexoUser, idiomaUser;
emailUser = mPlusClient.getAccountName();
if(mePerson!=null)
{
idUser = mePerson.getId();
nombreUser = mePerson.getDisplayName();
urlfotoUser = mePerson.getImage().getUrl();
urlperfilUser = mePerson.getUrl();
descUser = mePerson.getAboutMe();
fechaUser = mePerson.getBirthday();
idiomaUser = mePerson.getLanguage();
}
}
En el manifest tengo los permisos necesarios establecidos:
Código:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.READ_PROFILE" />
El problema es que mPlusClient.getCurrentPerson() devuelve null según le da, lo que hace imposible recuperar ningún dato. Revisando el fallo, descubro que al intentar recuperar el Person falla devolviendo NETWORK_ERROR.
Código:
A network error occurred. Retrying should resolve the problem.
Constant Value: 7 (0x00000007)
He seguido el tutorial de Google para llegar hasta aquí (https://developers.google.com/+/mobile/android/people), previamente creando el proyecto de Google API (https://developers.google.com/+/mobile/android/getting-started)
Puedo recuperar el email sin problema, pero con esto estoy totalmente atascado.