Autore Topic: problema login Facebook  (Letto 196 volte)

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
problema login Facebook
« il: 19 Ottobre 2016, 18:34:22 CEST »
0
Salve, vorrei integrare il login con Facebook.
Ho seguito tutte le procedure correttamente, però quando effettuo il login non mi fa accedere alla app perchè sono fermo a questo punto:

Codice (Java): [Seleziona]
FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.content_login);
        callbackManager = CallbackManager.Factory.create();
        LoginButton loginButton = (LoginButton)findViewById(R.id.login_facebook);
        loginButton.setReadPermissions("public_profile");
        loginButton.setReadPermissions("email");
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
                [b]Se l'utente effettua il login accede alla app, altrimenti viene reindirizzato nella pagina registrazione (con i campi compilati prelevati da facebook; Nome, Cognome, Cellulare, email,password) [/b]
            }

            @Override
            public void onCancel() {
                // App code
            }

            @Override
            public void onError(FacebookException exception) {
                // App code
            }


        });

La registrazione sulla app richiede i seguenti parametri:
Nome, Cognome, email, Cellulare, password

Il login viene effettuato tramite Cellulare e Password

I dati vengono inseriti in un db MySQL.

Il codice per la registrazione dei dati dell'utente è il seguente:
Codice (Java): [Seleziona]
public void postData(String token) {
        // Create a new HttpClient and Post Header
        HttpClient httpclient = HttpClients.createDefault();
        HttpPost httppost = new HttpPost("http://www.upac.it/registrazione.php");

        try {
            // Add your data
            String TokenSave = "TokenSave";
            SharedPreferences prefs = getSharedPreferences(TokenSave, Context.MODE_PRIVATE);
            String cel = prefs.getString("cel", "Nessun cel Salvato");
            String nome = prefs.getString("nome", "Nessun nome Salvato");
            String cognome = prefs.getString("cognome", "Nessun cognome Salvato");
            String password = prefs.getString("password","Nessuna Password");
            String email = prefs.getString("email","Nessuna Email");
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(7);
            nameValuePairs.add(new BasicNameValuePair("token", token));
            nameValuePairs.add(new BasicNameValuePair("cel", cel));
            nameValuePairs.add(new BasicNameValuePair("nome", nome));
            nameValuePairs.add(new BasicNameValuePair("cognome", cognome));
            nameValuePairs.add(new BasicNameValuePair("password",password));
            nameValuePairs.add(new BasicNameValuePair("registrazione","si"));
            nameValuePairs.add(new BasicNameValuePair("email",email));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            String responseStr = EntityUtils.toString(response.getEntity());
            Log.d("Risposta dal server",responseStr);
            if( responseStr.equals("0") ){
                String TokenSave2 = "TokenSave";
                SharedPreferences prefs2 = getSharedPreferences(TokenSave2, Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = prefs2.edit();
                editor.putString("errore","0");
                editor.commit();
                stopService1();
            }
            if( responseStr.equals("1") ){
                String TokenSave2 = "TokenSave";
                SharedPreferences prefs2 = getSharedPreferences(TokenSave2, Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = prefs2.edit();
                editor.remove("nome");
                editor.remove("cel");
                editor.remove("token");
                editor.remove("cognome");
                editor.remove("Password");
                editor.remove("email");
                editor.putString("errore", "1");
                editor.commit();
                String nome3 = prefs2.getString("nome","Niente");
                Log.d("nome", nome3);
            }

        } catch (ClientProtocolException e) {

            // TODO Auto-generated catch block
        } catch (IOException e) {
            // TODO Auto-generated catch block
        }
    }

Mi potete dare delle dritte su come sviluppare questa parte:
Codice (Java): [Seleziona]
FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.content_login);
        callbackManager = CallbackManager.Factory.create();
        LoginButton loginButton = (LoginButton)findViewById(R.id.login_facebook);
        loginButton.setReadPermissions("public_profile");
        loginButton.setReadPermissions("email");
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
                [b]Se l'utente effettua il login accede alla app, altrimenti viene reindirizzato nella pagina registrazione (con i campi compilati prelevati da facebook; Nome, Cognome, Cellulare, email,password) [/b]
            }

            @Override
            public void onCancel() {
                // App code
            }

            @Override
            public void onError(FacebookException exception) {
                // App code
            }


        });

Grazie

Post unito: 20 Ottobre 2016, 02:39:45 CEST
qual è il parametro per prelevare il numero di telefono facendo il login con facebook?

qui nella tabella dei riferimenti non c'è

https://developers.facebook.com/docs/facebook-login/permissions/

Come dicevo sopra nella mia app il login si fa tramite Numero di Cellulare e Password.

Come posso procedere nella registrazione nel db mysql dei dati facendo il login con Facebook

Codice (Java): [Seleziona]
FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.content_login);
        callbackManager = CallbackManager.Factory.create();
        LoginButton loginButton = (LoginButton)findViewById(R.id.login_facebook);
        loginButton.setReadPermissions("public_profile");
        loginButton.setReadPermissions("email");
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                // App code
                [b]Se l'utente effettua il login accede alla app, altrimenti viene reindirizzato nella pagina registrazione (con i campi compilati prelevati da facebook; Nome, Cognome, Cellulare, email,password) [/b]
            }

            @Override
            public void onCancel() {
                // App code
            }

            @Override
            public void onError(FacebookException exception) {
                // App code
            }


        });

Grazie
« Ultima modifica: 20 Ottobre 2016, 02:39:47 CEST da newbie2016, Reason: Merged DoublePost »

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema login Facebook
« Risposta #1 il: 20 Ottobre 2016, 20:46:11 CEST »
0
Salve, ma la mancanza di risposta è dovuta al fatto che non ho spiegato bene il problema oppure non sono nella sezione adatta?

Grazie

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema login Facebook
« Risposta #2 il: 25 Ottobre 2016, 19:36:28 CEST »
0
Ho implementato qualcosa.
in Login.java ho fatto così:

Codice (Java): [Seleziona]
public class Login extends FragmentActivity {
    Button btnLogout;
    ProgressDialog progressDialog;
    EditText mEtPwd;

    // Shared Preferences
    SharedPreferences pref;

    // Editor for Shared preferences
    SharedPreferences.Editor editor;

    // Context
    Context _context;

    public CallbackManager callbackManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        FacebookSdk.sdkInitialize(getApplicationContext());
        setContentView(R.layout.content_login);

        mEtPwd = (EditText) findViewById(R.id.password);

        [b]callbackManager = CallbackManager.Factory.create();
        LoginButton loginButton = (LoginButton)findViewById(R.id.login_facebook);
        loginButton.setReadPermissions("public_profile");
        loginButton.setReadPermissions("email");
        loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
            @Override
            public void onSuccess(LoginResult loginResult) {
                GraphRequest request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback(){
                    @Override
                    public void onCompleted(JSONObject object, GraphResponse response){
                        try {
                            JSONObject jsonObject = new JSONObject(response.getRawResponse());
                            Log.d("data",jsonObject.toString());
                            String email = jsonObject.getString("email");
                            String nome = jsonObject.getString("first_name");
                            String cognome = jsonObject.getString("last_name");
                            String parametri = email.concat("###").concat(nome).concat("###").concat(cognome);
                            startActivity(new Intent("android.intent.action.Registrazione"));
                        } catch (JSONException e) {
                            e.printStackTrace();
                        }
                    }
                });
                Bundle parametri = new Bundle();
                parametri.putString("fields","email,first_name,last_name");
                request.setParameters(parametri);
                request.executeAsync();
            }

            @Override
            public void onCancel() {

            }

            @Override
            public void onError(FacebookException error) {
            }

        });[/b]

        Button salvaInfo = (Button) findViewById(R.id.salvaInfo);
        salvaInfo.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                EditText cel = (EditText) findViewById(R.id.cel);
                String cel2 = cel.getText().toString();
                EditText password = (EditText) findViewById(R.id.password);
                String password2 = password.getText().toString();
                String TokenSave = "TokenSave";
                if( cel2 != null && cel2 != "" && !cel2.matches("") && password2 != null && password2 != "" && !password2.matches("") ) {
                    SharedPreferences pref = getSharedPreferences(TokenSave, Context.MODE_PRIVATE);
                    SharedPreferences.Editor editor = pref.edit();
                    editor.putString("cel", cel2);
                    editor.putString("password", password2);
                    editor.commit();
                    startService();
                }else{
                    Context context = getApplicationContext();
                    CharSequence testo = "Tutti i campi sono obbligatori";
                    int durata = Toast.LENGTH_LONG;
                    Toast toast = Toast.makeText(context,testo,durata);
                    toast.show();
                }
                SharedPreferences pref2 = getSharedPreferences(TokenSave, Context.MODE_PRIVATE);
                String errore2 = pref2.getString("errore", "Nessun Errore");
                Log.d("errore",errore2);
                if (errore2.equals("1")) {
                    cel.setHint("Cellulare o Password Errati");
                    cel.setText("");
                    password.setHint("Cellulare o Password Errati");
                    password.setText("");
                }
            }
        });
    }


    @Override
    protected void onStart(){
        super.onStart();
        String TokenSave = "TokenSave";
        SharedPreferences prefs = getSharedPreferences(TokenSave, Context.MODE_PRIVATE);
        String token1 = prefs.getString("token", "Nessun Token Salvato");
        String nome1 = prefs.getString("nome", "Nessun nome Salvato");
        String cognome1 = prefs.getString("cognome", "Nessun cognome Salvato");
        String cel1 = prefs.getString("cel", "Nessun cel Salvato");
        String errore = prefs.getString("errore", "Nessun Errore");
        String password1 = prefs.getString("password", "Nessuna Password");
        String email1 = prefs.getString("email","Nessuna Email");
        if (token1 == "Nessun Token Salvato" || nome1 == "Nessun nome Salvato" || cognome1 == "Nessun cognome Salvato" || cel1 == "Nessun cel Salvato" || errore == "1" || password1 == "Nessuna Password" || email1 == "Nessuna Email") {
            Log.d("nome1", nome1);
            Log.d("cognome1", cognome1);
            Log.d("cel1", cel1);
            Log.d("token1", token1);
        } else if (errore.equals("0")) {
            Log.d("fatto", "secondaActivity");
            startActivity(new Intent("android.intent.action.SecondActivity"));
        }
    }

    public void startService() {
        startService(new Intent(this, loginService.class));
    }
}

la parte in grassetto è quella che dovrebbe richiamare i dati da facebook e indirizzarli al file Registrazione.java

La procedura arriva fino al login su facebook, mi dice che ho già autorizzato l'app, ma quando clicco su ok non fa nulla ritorna sulla schermata della app senza aver ne effettuato il login e senza essere reindirizzata alla pagina registrazione con i campi compilati.

Come mai?

Grazie

Offline tonno16

  • Utente storico
  • *****
  • Post: 1169
  • Respect: +56
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:problema login Facebook
« Risposta #3 il: 25 Ottobre 2016, 19:53:48 CEST »
0
Dovresti fare debug dell'eccezione generata. Prova a stampare quella che hai in onError()

Offline newbie2016

  • Utente junior
  • **
  • Post: 79
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Cubot X9
  • Sistema operativo:
    Windows 7
Re:problema login Facebook
« Risposta #4 il: 25 Ottobre 2016, 21:16:09 CEST »
0
quando effettuo il login con facebook mi da il seguente errore:

Citazione
I/chromium: [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
I/chromium: [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
I/Choreographer: Skipped 34 frames!  The application may be doing too much work on its main thread.
I/Choreographer: Skipped 52 frames!  The application may be doing too much work on its main thread.