我已經在我的應用程序中實施了Facebook SDK,但我沒有得到用戶電子郵件(我想我需要設置獲取用戶電子郵件的權限 - 根據),但不知何故,它不適合我。我應該如何改進我的代碼才能完成它?Android Facebook SDK 3.0問題,同時獲取用戶電子郵件
這是我的代碼。
LoginScreen.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.facebook.*;
import com.facebook.Session.OpenRequest;
import com.facebook.model.*;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class LoginScreen extends Activity{
public static final String[] PERMISSIONS = new String[] {"email"};
public String fbId,first_name,last_name,email;
private Button button_fb;
JSONObject result;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.loginhome);
button_fb = (Button) findViewById(R.id.btn_signin_fb);
button_fb.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
// start Facebook Login
Session.openActiveSession(LoginScreen.this, true, new Session.StatusCallback() {
// session.openForRead(new OpenRequest(LoginScreen.this).setPermissions(Arrays.asList("email")));
// Callback when session changes state
@Override
public void call(final Session session, SessionState state, Exception exception) {
if (session.isOpened()) {
// Make request to the /me API
Request.executeMeRequestAsync(session, new Request.GraphUserCallback() {
// Callback after Graph API response with user object
@Override
public void onCompleted(GraphUser user, Response response) {
GraphObject graphObject = response.getGraphObject();
Log.d("graphboject",""+graphObject);
if (user != null) {
Toast.makeText(getApplicationContext(), user.getName(), Toast.LENGTH_SHORT).show();
fbId = user.getId();
first_name = user.getFirstName();
last_name = user.getLastName();
result = user.getInnerJSONObject();
email = (String) user.getProperty("email");
String emal = (String) response.getGraphObject().getProperty("email");
// String em = (String) user.asMap().get("email");
Log.d("user email",
(String) user.getProperty("email") + "link"
+ user.getLink());
Log.d("Fb fb_id", fbId);
Log.d("Fb first name", first_name);
Log.d("Fb last name", last_name);
Log.d("FB email", emal);
Log.d("Fb json", String.valueOf(result));
// Log.d("Fb email", email);
}
}
});
}
}
});
}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data);
}
}
我檢查我的控制檯上。我得到了一切,如用戶名,名字,姓氏,fb_id,但我沒有收到用戶的電子郵件。
我應該怎麼做?
我應該如何使用session.openForRead(new OpenRequest(LoginScreen.this).setPermissions(Arrays.asList("email")));
?在我的代碼中,我搜索了很多並查看了很多答案,但我仍然對如何在代碼中實現它感到困惑。
同樣的問題我也有問題,但沒有人回答我。 http://stackoverflow.com/questions/16332283/set-permission-for-getting-users-email-id-from-facebook-login – Anupam 2013-05-02 09:30:44
我有這個鏈接。這可能會幫助你。我也會嘗試這樣的事情。 http://adilatwork.blogspot.co.uk/2013/02/facebook-android-sdk-30-requesting.html – Anupam 2013-05-02 09:41:01
@Anupam感謝您分享鏈接..我也會試試 – iOSBee 2013-05-02 09:58:20