아래 코드를 사용하여 내 앱을 통해 내 페이스 북 이메일 주소를 가져 오려고했지만 반환 값은 null입니다.Android에서 Facebook으로부터 이메일을받을 수 없습니다.
public class MainActivity extends AppCompatActivity {
private CallbackManager callbackManager;
private Button fb;
private LoginButton loginButton;
private AccessToken accessToken;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
callbackManager = CallbackManager.Factory.create();
fb = (Button) findViewById(R.id.fb);
loginButton = (LoginButton) findViewById(R.id.login_button);
callbackManager = CallbackManager.Factory.create();
LoginManager.getInstance().registerCallback(
callbackManager,
new FacebookCallback <LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
accessToken= loginResult.getAccessToken();
GraphRequestAsyncTask request = GraphRequest.newMeRequest(AccessToken.getCurrentAccessToken(), new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject user, GraphResponse response) {
final Profile profile = Profile.getCurrentProfile();
if ((user != null) && (profile != null)) {
accessToken = AccessToken.getCurrentAccessToken();
if (accessToken.getDeclinedPermissions().isEmpty()) {
try {
String email = user.get("email").toString();
Log.e("facebook response email",email+"mm");
Log.e("facebook response",user.toString()+"mm");
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
}).executeAsync();
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException exception) {
}
}
);
}
public void onClick(View v) {
if (v == fb) {
LoginManager.getInstance().logInWithReadPermissions(
this,
Arrays.asList("email","public_profile")
);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
callbackManager.onActivityResult(requestCode, resultCode, data);
accessToken = AccessToken.getCurrentAccessToken();
if (accessToken != null) {
Log.e("Token", "Token: " + accessToken.getToken());
Log.e("UserID", "UserID: " + accessToken.getUserId());
}
}
}
나는 몇 가지 코드를 작성하지만, 결과가 null? 어떻게 Facebook SDK에서 이메일을받을 수 있습니까? 이유가 무엇인지 모르겠지만 그래프 API 탐색기를 사용하여 이메일 주소를 얻을 수 있습니다. 이 코드의 문제점을 아는 사람이 있습니까?
원하는 필드를 지정해야합니다. – WizKid
Facebook의 토큰과 전자 메일이 필요합니다. 그게 전부 @WizKid – BekaKK
입니다. Facebook에 요청할 때 원하는 필드를 지정해야합니다. 그렇지 않으면 Facebook에서 귀하에게 반환하지 않습니다. – WizKid