2016-03-19 73 views
0

あなたのメールのFacebookが存在するかどうかをチェックし、存在しない場合は "No mail found"と設定してください。 コードは正しいですが、Facebookのボタンをクリックしても、存在しない電子メールでエラーが発生するため、何も起こりません。 私は既に自分のユーザートークンでチェックしており、Facebookアカウントにはメールがありません。明らかに、それは電子メールの文字列なしで完全に動作します。facebook-mailが存在するかどうかを確認してください。

これは私のコードです:

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

は、あなたのAPIへのアクセスは、ユーザーの電子メールアドレスを取得する権利を持っていますか? – manabreak

+0

はい、Facebook用のメールはありません。既に確認済みです – Carlo

答えて

0

私は問題を解決しました。私は汎用のStringとしてString mailFbを宣言しました。コードの 他の部分は以下の通りです:

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(); 

     } 
関連する問題