在我的android应用程序中集成Facebook sdk
我知道这方面有很多教程,但没有成功。。 我需要获取已登录用户的配置文件详细信息 我集成了FAcebook SDK,如下所示在我的android应用程序中集成Facebook sdk,android,facebook,Android,Facebook,我知道这方面有很多教程,但没有成功。。 我需要获取已登录用户的配置文件详细信息 我集成了FAcebook SDK,如下所示 Session.OpenRequest openRequest = new Session.OpenRequest(Login.this); openRequest.setPermissions(Arrays.asList("email", "user_birthday")); openRequest.setCallback(new Session.Stat
Session.OpenRequest openRequest = new Session.OpenRequest(Login.this);
openRequest.setPermissions(Arrays.asList("email", "user_birthday"));
openRequest.setCallback(new Session.StatusCallback() {
// callback when session changes state
@Override
public void call(Session session, SessionState state,
Exception exception) {
if (session.isOpened()) {
// make request to the /me API
Request request = Request.newMeRequest(session,
new Request.GraphUserCallback() {
// callback after Graph API response with user
// object
@Override
public void onCompleted(GraphUser gUser,
Response response) {
if (gUser != null) {
String email = gUser.getProperty("email").toString();
String firstName = gUser.getFirstName();
String lastName = gUser.getLastName();
String username = gUser.getUsername();
String birthday = gUser.getBirthday();
}
}
});
request.executeAsync();
}
}
}
);
使用Facebook SDK 4.4.0尝试此功能 首先创建应用程序ID,然后将其添加到代码中。 按如下方式初始化SDK。
FacebookSdk.sdkInitialize(MainActivity.this);
setContentView(R.layout.activity_main);
loginButton = (LoginButton) findViewById(R.id.login_button);
loginButton.setReadPermissions(Arrays
.asList("public_profile, email, user_birthday, user_friends"));
callbackManager = CallbackManager.Factory.create();
loginButton.registerCallback(callbackManager,
new FacebookCallback<LoginResult>() {
@Override
public void onSuccess(LoginResult loginResult) {
new fblogin().execute(loginResult.getAccessToken());
}
@Override
public void onCancel() {
}
@Override
public void onError(FacebookException e) {
}
});
FacebookSdk.sdkinInitialize(MainActivity.this);
setContentView(R.layout.activity_main);
loginButton=(loginButton)findviewbyd(R.id.login_按钮);
setReadPermissions(数组
.asList(“公众档案、电子邮件、用户生日、用户朋友”);
callbackManager=callbackManager.Factory.create();
loginButton.registerCallback(callbackManager,
新建FacebookCallback(){
@凌驾
成功时公共无效(LoginResult LoginResult){
新建fblogin().execute(loginResult.getAccessToken());
}
@凌驾
公开作废{
}
@凌驾
公共无效onError(FaceBook例外e){
}
});
Asynctask无法获取配置文件详细信息
public class fblogin extends AsyncTask<AccessToken, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Loading...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
protected String doInBackground(AccessToken... params) {
GraphRequest request = GraphRequest.newMeRequest(params[0],
new GraphRequest.GraphJSONObjectCallback() {
@Override
public void onCompleted(JSONObject object,
GraphResponse response) {
Log.v("MainActivity", response.toString());
try {
String profile_pic = object.getString("id");
try {
myurl = new URL(
"https://graph.facebook.com/"
+ profile_pic + "/picture");
} catch (Exception e) {
e.printStackTrace();
}
profilepic = myurl.toString();
Log.v("Name", object.getString("first_name"));
Log.v("Email", object.getString("email"));
Log.v("Profile Pic Url", profilepic);
Log.v("Gender", object.getString("gender"));
} catch (JSONException jse) {
// session.logoutUser();
Log.e("fb json exception", jse.toString());
}
}
});
Bundle parameters = new Bundle();
parameters.putString("fields", "id,first_name,email,gender");
request.setParameters(parameters);
GraphRequest.executeBatchAndWait(request);
return null;
}
protected void onPostExecute(String file_url) {
pDialog.dismiss();
Intent i = new Intent(MainActivity.this, SecondActivity.class);
startActivity(i);
MainActivity.this.finish();
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
}
}
公共类fblogin扩展异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=新建进度对话框(MainActivity.this);
设置消息(“加载…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(假);
pDialog.show();
}
受保护的字符串doInBackground(AccessToken…参数){
GraphRequest请求=GraphRequest.NewMereRequest(参数[0],
新建GraphRequest.GraphJSONObjectCallback(){
@凌驾
未完成的公共void(JSONObject对象,
GraphResponse(反应){
Log.v(“MainActivity”,response.toString());
试一试{
字符串配置文件_pic=object.getString(“id”);
试一试{
myurl=新URL(
"https://graph.facebook.com/"
+个人资料(图片+“/图片”);
}捕获(例外e){
e、 printStackTrace();
}
profilepic=myurl.toString();
Log.v(“Name”,object.getString(“first_Name”);
Log.v(“Email”,object.getString(“Email”);
Log.v(“Profile Pic Url”,profilepic);
Log.v(“性别”,object.getString(“性别”);
}捕获(JSONException jse){
//session.logoutUser();
Log.e(“FBJSON异常”,jse.toString());
}
}
});
Bundle参数=新Bundle();
参数.putString(“字段”、“id、名字、电子邮件、性别”);
请求。设置参数(参数);
GraphRequest.ExecuteBatchWait(请求);
返回null;
}
受保护的void onPostExecute(字符串文件\u url){
pDialog.disclose();
意图i=新意图(MainActivity.this,SecondActivity.class);
星触觉(i);
MainActivity.this.finish();
i、 设置标志(意图、标志、活动、清除、顶部);
i、 设置标志(意图、标志、活动、新任务);
}
}
将其添加到AndroidManifest.xml
<activity
android:name="com.facebook.FacebookActivity"
android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />