2016-07-22 4 views
0

Facebookのログインについて知りたいです。私は正常にFacebookのSDKを使用して私のアプリにログインすることができます。しかし、ユーザーの電子メールIDをフェッチしている間に、ユーザーがFacebookのWebサイト設定で電子メールを隠してしまったときにnull値を取得することがあります。その場合、ユーザーに自分のFacebook電子メールIDを入力するよう依頼しています。 Facebookに登録するかどうか。入力したメールがFacebookに登録されているかどうかを確認する方法はありますか?入力した電子メールがFacebookに登録されているかどうかを確認してください

public class LoginActivity extends AppCompatActivity implements LoaderCallbacks<Cursor> { 
 

 
    
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_login); 
 

 
     
 
     facebookOncreateCalling(); 
 

 
     
 
     ImageView facebookLogin = (ImageView) findViewById(R.id.facebook_login_imageView2); 
 
     facebookLogin.setOnClickListener(new OnClickListener() { 
 
      @Override 
 
      public void onClick(View v) { 
 

 
       
 

 

 
       try { 
 
        LoginManager.getInstance().logOut(); 
 

 
       } catch (Exception e) { 
 
        e.printStackTrace(); 
 
       } 
 

 
       LoginManager.getInstance().logInWithReadPermissions(LoginActivity.this, Arrays.asList("public_profile", "user_friends", "email" /*, "user_mobile_phone", "email", "user_birthday"*/)); 
 
      } 
 
     }); 
 

 
    } 
 

 
    
 
    
 
    public void hideSoftKeyboard(EditText inputtext) { 
 
     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
 
     imm.hideSoftInputFromWindow(inputtext.getWindowToken(), 0); 
 
    } 
 

 
    
 
    CallbackManager callbackManager; 
 
    AccessTokenTracker accessTokenTracker; 
 
    AccessToken accessToken; 
 

 
    private void facebookOncreateCalling() { 
 

 
     try { 
 
      PackageInfo info = getPackageManager().getPackageInfo(
 
        getApplicationContext().getPackageName(), 
 
        PackageManager.GET_SIGNATURES); 
 
      for (Signature signature : info.signatures) { 
 
       MessageDigest md = MessageDigest.getInstance("SHA"); 
 
       md.update(signature.toByteArray()); 
 
       Log.d("Facebook KeyHash:", "KeyHash:-> " + Base64.encodeToString(md.digest(), Base64.DEFAULT)); 
 

 
       
 
      } 
 
     } catch (PackageManager.NameNotFoundException e) { 
 
      e.printStackTrace(); 
 
     } catch (NoSuchAlgorithmException e) { 
 
      e.printStackTrace(); 
 
     } catch (Exception e) { 
 
      e.printStackTrace(); 
 
     } 
 

 
     FacebookSdk.sdkInitialize(getApplicationContext()); 
 
     AppEventsLogger.activateApp(this); 
 

 
     callbackManager = CallbackManager.Factory.create(); 
 

 
     LoginManager.getInstance().registerCallback(callbackManager, 
 
       new FacebookCallback<LoginResult>() { 
 
        @Override 
 
        public void onSuccess(LoginResult loginResult) { 
 
         callGraphApi(loginResult); 
 
        } 
 

 
        @Override 
 
        public void onCancel() { 
 
         Log.e("====Login Activity===","Cancel"); 
 
        } 
 

 
        @Override 
 
        public void onError(FacebookException exception) { 
 
         Log.e("====Login Activity===","Error"+exception); 
 
        } 
 
       }); 
 

 
     
 
     accessTokenTracker = new AccessTokenTracker() { 
 
      @Override 
 
      protected void onCurrentAccessTokenChanged(
 
        AccessToken oldAccessToken, 
 
        AccessToken currentAccessToken) { 
 
       accessToken = currentAccessToken; 
 
      } 
 
     }; 
 
     accessToken = AccessToken.getCurrentAccessToken(); 
 
    } 
 

 
    
 
    private void callGraphApi(LoginResult loginResult) { 
 
     GraphRequest request = GraphRequest.newMeRequest(
 
       loginResult.getAccessToken(), 
 
       new GraphRequest.GraphJSONObjectCallback() { 
 
        @Override 
 
        public void onCompleted(
 
          JSONObject object, 
 
          GraphResponse response) { 
 
         try { 
 
\t \t \t \t \t \t 
 
          Log.e("LoginActivity", "GraphRequest:" + object); 
 

 
          
 

 
          String fbUserId = object.optString("id"); 
 
          String firstNameString = object.optString("first_name"); 
 
          String lastNameString = object.optString("last_name"); 
 
          String email = object.optString("email"); 
 

 
          String name = object.optString("name"); 
 

 
          String url = AppDataUtill.APP_BASE_URL + "facebookSignup"; 
 
          HashMap<String, String> map = new HashMap<String, String>(); 
 
          map.put("fname",firstNameString); 
 
          map.put("lname",lastNameString); 
 
          map.put("email",email); 
 
          map.put("fb_user_id", fbUserId); 
 

 
          callFbSignupApi(url, map, 1, fbUserId); 
 
          
 

 

 
         } catch (Exception e) { 
 
          e.printStackTrace(); 
 
         } 
 
        } 
 
       }); 
 
     Bundle parameters = new Bundle(); 
 
     parameters.putString("fields", "id,name,first_name,last_name,link,birthday,gender,email"); 
 
     request.setParameters(parameters); 
 
     request.executeAsync(); 
 
    } 
 

 

 
    
 

 

 
    @Override 
 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
 
     super.onActivityResult(requestCode, resultCode, data); 
 
     callbackManager.onActivityResult(requestCode, resultCode, data); 
 

 

 
     
 
    } 
 

 
    
 
    private void validation(){ 
 

 
     AlertDialog.Builder alert = new AlertDialog.Builder(getApplicationContext()); 
 
     alert.setMessage("Enter Your Email"); 
 

 
     
 
     final EditText input = new EditText(getApplicationContext()); 
 
     alert.setView(input); 
 

 
     alert.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
 
      public void onClick(DialogInterface dialog, int whichButton) { 
 
       
 
       String srt = input.getEditableText().toString(); 
 
       if (srt.matches("")) { 
 
        Toast.makeText(getApplicationContext(), "Enter Your Email", Toast.LENGTH_LONG).show(); 
 
        return; 
 
       } 
 

 
      } 
 
     }); 
 
     alert.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() { 
 
      public void onClick(DialogInterface dialog, int whichButton) { 
 
       
 
       dialog.cancel(); 
 
      } 
 
     }); 
 
     AlertDialog alertDialog = alert.create(); 
 
     alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE); 
 
     alertDialog.show(); 
 

 

 

 
    } 
 

 

 

 
}

+0

それぞれのfbユーザーが自分の電子メールIDを登録している必要はありません.fbを使用すると、モバイルでもサインアップできます。 – Drv

+0

ユーザーが電子メールIDで登録したとします。次にそれを確認する方法は? – Ushasi

+0

もしあなたがFacebookからメールIDを取得していたら、あなたは明らかに自動ログインをしますが、fb電子メールIDを取得していないことを指定しています。 – Drv

答えて

0

電子メールでユーザーを検索することができず、特定の電子メールがフェイスブックに登録されているかどうかを確認する方法はありません。さらに詳しい情報:Find Facebook user (url to profile page) by known email address

電子メールの許可を得たユーザーのみが電子メールを受け取ることができますが、何もすることはできません。

関連する問題