[英]How to get Session Class in latest Facebook Android SDK 4.6.0
[英]How to get email id From Android Facebook SDK 4.6.0?
這是我在Facebook登錄后獲取用戶信息的代碼。 我正在嘗試從正在獲取名稱,ID的用戶那里獲取電子郵件ID,但是沒有獲取該電子郵件ID。我嘗試使用Login Button和Login Manager類給出相同的結果。 現在如何從響應中獲取電子郵件ID:
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(final LoginResult loginResult) {
new GraphRequest(AccessToken.getCurrentAccessToken(),
"/me", null , HttpMethod.GET,
new GraphRequest.Callback() {
public void onCompleted(
GraphResponse response) {
handle the result
if (response !=null )
{
//GET USER INFORMATION
Toast.makeText(getApplicationContext(),"Hello in JSON",Toast.LENGTH_LONG).show();
JSONObject json = response.getJSONObject();
//JSONArray jsona = response.getJSONArray();
Log.i(TAG,"" +json);
// Log.i(TAG,"" +json);
String email = json.optString("email");
// String email = json.optString("email");
//Log.i("email", "" + email);
Log.i(TAG,"" +email);
String fullName = json.optString("name");
String location = json.optString("location");
String accessToken = loginResult.getAccessToken().getToken();
String user_id = json.optString("id");
Log.i(TAG,"" +json);
Toast.makeText(getApplicationContext(),fullName,Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(),email,Toast.LENGTH_LONG).show();
Toast.makeText(getApplicationContext(),user_id,Toast.LENGTH_LONG).show();
//int type = 1;
// String lastUpdate = json.getString("updated_time");
// Log.i("email", "" + email);
// Log.i("Message", "HELLO");
Log.i("Name", "" + fullName);
Log.i("ID", "" + user_id);
}
}
}).executeAsync();
謝謝..!!
LoginManager.getInstance().logInWithReadPermissions(WelcomeActivity1.this, (Arrays.asList("public_profile", "user_friends","user_birthday","user_about_me","email")));
String email;
LoginManager.getInstance().registerCallback(callbackManager,new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
Log.d("tag","FF fb onSuccess");
GraphRequest request = GraphRequest.newMeRequest(loginResult.getAccessToken(),new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,GraphResponse response) {
try {
String[] splited ;
JSONObject obj = object.getJSONObject("picture").getJSONObject("data");
if (object.has("email"))
{
email = object.getString("email");
}
else
{
email = "";
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,link,birthday,picture,email,gender");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
Log.d("tag","fb onCancel");
// App code
}
@Override
public void onError(FacebookException exception) {
Log.d("tag","fb onError");
// App code
}
});
通過這種方式獲取Facebook登錄的所有內容...
locationMangaer = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
loginButton = (LoginButton)findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays.asList("email", "user_photos", "public_profile", "user_friends"));
callbackManager= CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager, new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
GraphRequest request = GraphRequest.newMeRequest(
loginResult.getAccessToken(),
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(
JSONObject object,
GraphResponse response) {
// Application code
Log.e("LoginActivity", response.toString() + " " + object.toString());
try {
String name=object.getString("name");
String email=object.getString("email");
String id=object.getString("id");
String gender=object.getString("gender");
Log.e("LoginActivity", name + " " + email + " " + id + " " + gender);
} catch (JSONException e) {
e.printStackTrace();
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,name,email,gender, birthday");
request.setParameters(parameters);
request.executeAsync();
}
@Override
public void onCancel() {
// App code
Log.e("LOGIN Cancle", "LOGIN Cancle");
}
@Override
public void onError(FacebookException exception) {
// App code
Log.e("LOGIN Cancle", exception.getMessage());
}
});
從Graph API v2.4開始,您需要指定要在查詢中返回的每個字段。
new GraphRequest(AccessToken.getCurrentAccessToken(),
"/me", null , HttpMethod.GET,
new GraphRequest.Callback() {
...
需要成為
new GraphRequest(AccessToken.getCurrentAccessToken(),
"/me?fields=id,name,email", null , HttpMethod.GET,
new GraphRequest.Callback() {
...
這是有據可查的,因此在SO上有許多類似的問題。 發表問題之前,請先參考文檔。
請記住,您需要適當的權限才能請求用戶詳細信息。 在這種情況下是email
看到:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.