How to get user details after successful Login through Facebook

后端 未结 1 1948
庸人自扰
庸人自扰 2021-01-03 13:33

I tried this: when isSessionValid getDetails directly else facebook.authorize and then getDetails in onActivityResult

public class MainActivity extends Activ         


        
1条回答
  •  青春惊慌失措
    2021-01-03 13:54

    Here in initFacebook() function through you can login and perform you functionality, here i am fetching user's friends information.

    private void initFacebook() 
    {
        try
        {
            if (APP_ID == null) 
            {
                Util.showAlert(this,"Warning","Facebook Applicaton ID must be "+ "specified before running this example: see Example.java");
            }
    
            mFacebook = new Facebook();
            mAsyncRunner = new AsyncFacebookRunner(mFacebook);
            mFacebook.authorize(FacebookList.this, APP_ID, new String[] {"email", "read_stream", "user_hometown", "user_location","friends_about_me", "friends_hometown", "friends_location","user_relationships", "friends_relationship_details","friends_birthday", "friends_education_history","friends_website" }, new DialogListener()
            {
                public void onComplete(Bundle values) 
                {
                    getHTTPConnection();
                }
    
                public void onFacebookError(FacebookError error) 
                {
                    Log.i("public void onFacebookError(FacebookError error)....","....");
                }
    
                public void onError(DialogError e) 
                {
                    Log.i("public void onError(DialogError e)....", "....");
                    CustomConfirmOkDialog dialog = new CustomConfirmOkDialog(FacebookList.this, R.style.CustomDialogTheme, Utils.FACEBOOK_CONNECTION_ERROR);
                    dialog.show();
                }
    
                public void onCancel() 
                {
                    Log.i("public void onCancel()....", "....");
                }
            });
    
            SessionStore.restore(mFacebook, this);
            SessionEvents.addAuthListener(new SampleAuthListener());
            SessionEvents.addLogoutListener(new SampleLogoutListener());
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
    

    Here in getHTTPConnection(), proceeding for connection and sending fields, that we require about user's friends as here we can see that passing fields are fields=id,first_name,last_name,location,picture of friends. here you can change this fields according to application's requirements.

    private void getHTTPConnection() 
    {
        try
        {
            mAccessToken = mFacebook.getAccessToken();
            HttpClient httpclient = new DefaultHttpClient();
            String result = null;
            HttpGet httpget = new HttpGet("https://graph.facebook.com/me/friends?access_token="+ mAccessToken + "&fields=id,first_name,last_name,location,picture");
            HttpResponse response;
            response = httpclient.execute(httpget);
            HttpEntity entity = response.getEntity();
            if (entity != null) 
            {
                result = EntityUtils.toString(entity);
                parseJSON(result);
            }
        }
        catch (Exception e) 
        {
            e.printStackTrace();
        }
    }
    

    Now after successfully connecting with facebook , we are getting JSON data and further to parse it .

    private void parseJSON(String data1) throws Exception,NullPointerException, JSONException 
    {
        try 
        {
            JSONObject jObj = new JSONObject(data1);
            JSONArray jObjArr = jObj.optJSONArray("data");
            int lon = jObjArr.length();
    
    
            for (int i = 0; i < lon; i++) 
            {
                JSONObject tmp = jObjArr.optJSONObject(i);
    
                String temp_image =  tmp.getString("picture");                          String temp_fname = tmp.getString("first_name");
    
                String temp_lname = tmp.getString("last_name");
    
                String temp_loc = null;
    
                JSONObject loc = tmp.getJSONObject("location");
                temp_loc = loc.getString("name");
    
    
            }
        } 
        catch (Exception e) 
        {
            Log.i("Exception1 is Here>> ", e.toString());
            e.printStackTrace();
        }
    }
    

    It is assumed that you have already added a facebook jar in to your application and for proceeding this code you can call initFacebook() in to onCreate() of your activity

    0 讨论(0)
提交回复
热议问题