2015-10-10 34 views
0

我知道有可用于此很多教程,但没有成功.. 我需要得到的登录用户配置文件的详细信息。整合Facebook SDK在我的Android应用程序

我综合的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(); 

      } 
     } 
    } 
    ); 

回答

0

与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) { 

        } 
       }); 

的的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); 
     } 
    } 

一下添加到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" /> 
+0

谢谢主席先生..它帮了我很多..谢谢。 –

相关问题