2016-03-19 22 views
0

Kullanıcının e-posta Facebook varsa veya mevcut değilse benim android app kontrol etmek istiyorum ve "Hayır posta bulundu" olarak ayarlayın. Kod doğru ama Facebook düğmesine tıkladığımda hiçbir şey olmamıştı çünkü mevcut e-posta adresim bir hataya neden oldu. Kullanıcı kimliğimi kontrol ettim ve Facebook hesabımda e-posta adresi yok. Açıkçası e-posta dizesi olmadan mükemmel çalışır. Ben sorunu çözmüşEğer facebook-posta varsa veya olmasın android kontrol edin

loginButtonFb.setReadPermissions("user_friends", "email"); 
    loginButtonFb.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      new GraphRequest(
        AccessToken.getCurrentAccessToken(), 
        loginResult.getAccessToken().getUserId(), 
        null, 
        HttpMethod.GET, 
        new GraphRequest.Callback() { 
         public void onCompleted(GraphResponse response) { 
          try { 
           JSONObject data = response.getJSONObject(); 
           login_name = data.getString("name"); 
           String idFb = data.getString("id"); 
           String mailFb = data.getString("email"); 
           String method = "loginFb"; 
           BackgroundTaskLogin backgroundTask = new BackgroundTaskLogin(mContext); 
           backgroundTask.execute(method, login_name, idFb, mailFb); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 

         } 
        } 
      ).executeAsync(); 

     } 

     @Override 
     public void onCancel() { 
      Toast.makeText(mContext, "Login attempt canceled.", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void onError(FacebookException e) { 
      Toast.makeText(mContext, "Login attempt failed.", Toast.LENGTH_LONG).show(); 
     } 
    }); 
+0

Emin misin API erişim kullanıcının e-posta adresini elde etmek hakkına sahiptir? – manabreak

+0

evet, Facebook için e-posta adresim yok, önceden doğrulanmış – Carlo

cevap

0

:

Bu

benim kodudur. Dize mailFb'yi evrensel String olarak bildirdim. kod diğer kısmı aşağıdaki gibidir:

loginButtonFb.registerCallback(callbackManager, new FacebookCallback<LoginResult>() { 
     @Override 
     public void onSuccess(LoginResult loginResult) { 

      new GraphRequest(
        AccessToken.getCurrentAccessToken(), 
        loginResult.getAccessToken().getUserId(), 
        null, 
        HttpMethod.GET, 
        new GraphRequest.Callback() { 
         public void onCompleted(GraphResponse response) { 
          try { 
           JSONObject data = response.getJSONObject(); 
           login_name = data.getString("name"); 
           String idFb = data.getString("id"); 
           if(!data.isNull("email")){ 
           mailFb = data.getString("email"); 
           } 
           mailFb = "Mail not found"; 
           String method = "loginFb"; 
           BackgroundTaskLogin backgroundTask = new BackgroundTaskLogin(mContext); 
           backgroundTask.execute(method, login_name, idFb, mailFb); 
          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 

         } 
        } 
      ).executeAsync(); 

     } 
İlgili konular