2016-05-30 8 views
1

私はGraph API ExplorerさんAccessTokenを使用している場合は、私がFacebook SDKのAndroidのFacebook SDK AcccessToken問題

  1. から取得することを、私はidnameemailを得ることができ、AccessTokenでユーザーemailを取得しようとは関係ありません。使用ブラウザやOkHttp

    "https://graph.facebook.com/" + user_id + "?fields=email,name&access_token=" + access_token_from_graph_explorer

私は、このようなresponceを得る:

{ 
     "email": "[email protected]", 
     "name": "John Doe", 
     "id": "4545" 
} 

私はAccessToken.getCurrentAccessToken().getToken()方法で撮影したtokenを使用している場合は、私はJSONObjectemailを得ることはありません。

  1. Graph Explorerを使用すると、私はidを見ることができます。私は要求をこのように作ってみました:

"https://graph.facebook.com/me?fields=email,name&access_token="

と、この:第二の変形で

"https://graph.facebook.com/" + id + "?fields=email,name&access_token="

idを使用している間、私は、"Unsupported get request. Object with ID 'xxxxxxxxxxx' does not exist, cannot be loaded due to missing permissions...をしました。私が別のuseridを使用しようとしたとき、私はまだemailを手に入れませんでした。

Bundle bundle = new Bundle(); 
      bundle.putString("fields", "email,name"); 
      new GraphRequest(
        AccessToken.getCurrentAccessToken(), 
        "me", 
        bundle, 
        HttpMethod.GET, 
        new GraphRequest.Callback() { 
         public void onCompleted(GraphResponse response) { 
          System.out.println("data = " + response.toString()); 
         } 
        } 
      ).executeAsync(); 

この変形例では、emailも発生しませんでした。

私は混乱しています。教えてください。ユーザーのメールをどのように取得できますか?私がしよう

3.Afterログイン:

public void onSuccess(LoginResult loginResult) { 
      System.out.println("succses =" + loginResult.getAccessToken().getToken()); 
      accessToken = loginResult.getAccessToken(); 

      GraphRequest.newMeRequest(accessToken, new GraphRequest.GraphJSONObjectCallback() { 
       @Override 
       public void onCompleted(JSONObject user, GraphResponse graphResponse) { 
        Log.d("TAG", user.optString("email")); 
        Log.d("TAG", user.optString("name")); 
        Log.d("TAG", user.optString("id")); 
        init(); 
       } 
      }).executeAsync(); 
     } 

しかし、私は、電子メール P.S.でTAGが表示されませんgraph explorerのすべてのアクセス許可が有効になっています。

+0

に答えを見つけた...私は同じ問題に直面していた... http://stackoverflow.com/a/33412596 –

+0

@ExceptionLoverうん感謝。これは助けになりました。 –

+0

plzは私の答えを受け入れる... !! –

答えて

2

最高の投票回答は私にとってはうまくいかず、メールはいつも空でした。私はstackoverflowの上でこの答えを試すStackoverflow

LoginManager.getInstance().registerCallback(mCallbackManager, 
      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) { 

          JSONObject json = response.getJSONObject(); 
          try { 
           if(json != null){ 
            String text = json.getString("email"); 
            Log.d("email",text); 

           } 

          } catch (JSONException e) { 
           e.printStackTrace(); 
          } 
         } 
        }); 
        Bundle parameters = new Bundle(); 
        parameters.putString("fields", "id,name,link,email,picture"); 
        request.setParameters(parameters); 
        request.executeAsync(); 

       } 

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

       @Override 
       public void onError(FacebookException exception) { 
        // App code 
       } 
      }); 
関連する問題