Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在我的android应用程序中集成Facebook sdk_Android_Facebook - Fatal编程技术网

在我的android应用程序中集成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

我知道这方面有很多教程,但没有成功。。 我需要获取已登录用户的配置文件详细信息

我集成了FAcebook SDK,如下所示

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" />