Closed GReaper closed 10 years ago
Dejo posibles links para saber como plantear esta issue:
https://developers.facebook.com/docs/reference/fql/user --> Se utiliza FQL para esta búsqueda, te devuelve la latitud y la longitud actual del usuario.
http://stackoverflow.com/questions/13373794/graph-api-not-getting-location-from-facebook-sdk-in-android --> En este también hablan de FQL y por lo que veo solo te devuelve la ciudad o sitio que ha fijado el usuario. Puede servir si de alguna manera podemos después sacar la localización
Seguiré investigando a ver si encuentro más.
Me asigno issue. Es uno de los puntos críticos ahora. Trataré de finalizarla cuanto antes.
Actualizo
He generado una llamada a FQL de Facebook para tomar la posición. Hay que probarla cuanto antes. El problema es que no puedo ver si va bien porque no soy capaz de saber cómo tomar la sesión actual del usuario.
Asigno esta parte por el momento a @rMarinf . En cuanto puedas echa un ojo y agrega el código o dime cómo tomar la sesión actual (objeto Session
).
Cuando esté hecho seguiré hasta terminar la parte de localización.
El código que hay que revisar está en la clase ConectorFacebook
, línea 317. Ahora mismo pone Session sesion = facebook.getSession();
pero eso no funciona (devuelve siempre null como si no existiese sesión). Entiendo que no debe ser muy complicado coger la sesión pero no veo de dónde sacarla.
Ese getSession() si te debería de devolver una sesión si la tienes abierta, estoy yo haciendo pruebas y tengo problemas con ello y espero arreglarlo lo mas rápido posible. Si puedes, no se si lo habrás probado ya, cierra sesión y vuelve a abrirla, deberías de tener ese objeto de Session
Probaré eso, me reasigno issue. Si sigue fallando pasaré a otro punto hasta que funcione.
Acabo de probar yo y si me devolvió un objeto Session
pero me fallo en otro punto después
Ahora sí, sesión funcionando. Sigo con la issue.
Actualizo
Aún con GPS y demás sigue sin coger en absoluto bien la posición, me marca Madrid. @rMarinf y @Argaide , probad esto en cuanto podáis y comprobad si coge bien vuestra latitud y longitud para descartar un problema de cobertura de GPS.
Para probarlo, breakpoint en ConectorFacebook
, línea 362 aprox., la que pone Double lon = localizacion.getDouble("longitude");
. Para que se llame a la localización, pedid una recomendación marcando que se use la posición actual.
Si os fallase y no llegase, cerrad la sesión que tuviéseis y abrid una nueva.
Para comprobar qué lat, long os da y si son correctas, podéis buscar una posición por latitud y longitud en Google Maps.
Si esto no funciona, mañana/después paso a la localización por GPS del móvil.
Autoanotación
No puedo comprobar nada porque me da el siguiente error:
12-17 18:35:49.751: E/AndroidRuntime(472): android.os.NetworkOnMainThreadException
12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.org.conscrypt.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:724)
12-17 18:35:49.751: E/AndroidRuntime(472): at java.io.BufferedOutputStream.flushInternal(BufferedOutputStream.java:185)
12-17 18:35:49.751: E/AndroidRuntime(472): at java.io.BufferedOutputStream.flush(BufferedOutputStream.java:85)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpTransport.flushRequest(HttpTransport.java:107)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpEngine.readResponse(HttpEngine.java:642)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:347)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:296)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:503)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:136)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Response.fromHttpConnection(Response.java:301)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeConnectionAndWait(Request.java:1564)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeBatchAndWait(Request.java:1463)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeBatchAndWait(Request.java:1432)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.facebook.Request.executeBatchAndWait(Request.java:1414)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.conector.ConectorFacebook.getPosicionActual(ConectorFacebook.java:329)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.localizacion.Localizador.posicionUsuarioActual(Localizador.java:26)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity.getLocalizacionUsuario(RecomendacionActivity.java:712)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity.solicitarRecomendacion(RecomendacionActivity.java:752)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity.access$2(RecomendacionActivity.java:745)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.ssii.madridliveapp.RecomendacionActivity$2.onClick(RecomendacionActivity.java:228)
12-17 18:35:49.751: E/AndroidRuntime(472): at android.view.View.performClick(View.java:4438)
12-17 18:35:49.751: E/AndroidRuntime(472): at android.view.View$PerformClick.run(View.java:18422)
12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.Handler.handleCallback(Handler.java:733)
12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.Handler.dispatchMessage(Handler.java:95)
12-17 18:35:49.751: E/AndroidRuntime(472): at android.os.Looper.loop(Looper.java:136)
12-17 18:35:49.751: E/AndroidRuntime(472): at android.app.ActivityThread.main(ActivityThread.java:5017)
12-17 18:35:49.751: E/AndroidRuntime(472): at java.lang.reflect.Method.invokeNative(Native Method)
12-17 18:35:49.751: E/AndroidRuntime(472): at java.lang.reflect.Method.invoke(Method.java:515)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
12-17 18:35:49.751: E/AndroidRuntime(472): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
12-17 18:35:49.751: E/AndroidRuntime(472): at dalvik.system.NativeStart.main(Native Method)
Pospuesta Se continuará con la issue tras #71 y haciendo uso de este módulo.
Geolocalización para el usuario activo funcionando
Es necesario probar cuanto antes la geolocalización de Facebook para saber si nos será útil para tomar posiciones de usuario. Esta localización debería ser bloqueante. Es decir, no debería funcionar con el método de "enviar peticion -> esperar callback". Es posible que haya que recurrir a FQL o la API Graph y generar una función. Por todo esto hay que probarlo cuanto antes. Sólo en última instancia se tomará la posición con GPS.