Saludos,
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:
Cuando la activity se inicia:
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:
En el manifest tengo los permisos necesarios establecidos:
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.
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.
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 [Seleccionar]
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 [Seleccionar]
@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 [Seleccionar]
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 [Seleccionar]
<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 [Seleccionar]
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.