Permissions Error - Trying to get friends using android facebook sdk

前端 未结 3 1910
我寻月下人不归
我寻月下人不归 2021-01-03 10:53

I am trying to add a feature to my android app that allows users to \"checkin\" with other people tagged to the checkin. I have the checkins method working no problem and ca

相关标签:
3条回答
  • 2021-01-03 11:02

    You might need the following permissions:

    • user_checkins
    • friends_checkins
    • read_friendlists
    • manage_friendlists
    • publish_checkins

    Check the related ones from the API docs. Before that, make sure that which line causes this permission error and try to fix it.

    0 讨论(0)
  • You can private static final String[] PERMISSIONS = new String[] {"publish_stream","status_update",xxxx};xxx is premissions

    0 讨论(0)
  • 2021-01-03 11:16

    The solution is to implement a RequestListener when making the request to the Facebook graph API. I have the new getFriends() method (see below) which uses the AsyncGacebookRunner to request the data.

    public void getFriends(CharSequence[] charFriendsNames,String[] sFriendsID, ProgressBar progbar) {
        try{
            //Pass arrays to store data
            friends = charFriendsNames;
            friendsID = sFriendsID;
            pb = progbar;
            Log.d(TAG, "Getting Friends!");
            //Create Request with Friends Request Listener
            mAsyncRunner.request("me/friends", new FriendsRequestListener());
        } catch (Exception e) {
            Log.d(TAG, "Exception: " + e.getMessage());
        }
    }
    

    The AsyncFacebookRunner makes the the request using the custom FriendsRequestListener (see below) which implements the RequestListener class;

    private class FriendsRequestListener implements RequestListener {
        String friendData;
    
        //Method runs when request is complete
        public void onComplete(String response, Object state) {
            Log.d(TAG, "FriendListRequestONComplete");
            //Create a copy of the response so i can be read in the run() method.
            friendData = response; 
    
            //Create method to run on UI thread
            FBConnectActivity.this.runOnUiThread(new Runnable() {
                public void run() {
                    try {
                        //Parse JSON Data
                        JSONObject json;
                        json = Util.parseJson(friendData);
    
                        //Get the JSONArry from our response JSONObject
                        JSONArray friendArray = json.getJSONArray("data");
    
                        //Loop through our JSONArray
                        int friendCount = 0;
                        String fId, fNm;
                        JSONObject friend;
                        for (int i = 0;i<friendArray.length();i++){
                            //Get a JSONObject from the JSONArray
                            friend = friendArray.getJSONObject(i);
                            //Extract the strings from the JSONObject
                            fId = friend.getString("id");
                            fNm = friend.getString("name");
                            //Set the values to our arrays
                            friendsID[friendCount] = fId;
                            friends[friendCount] = fNm;
                            friendCount ++;
                            Log.d("TEST", "Friend Added: " + fNm);
                        }
    
                        //Remove Progress Bar
                        pb.setVisibility(ProgressBar.GONE);
    
                    } catch (JSONException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    } catch (FacebookError e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
            });
        }
    

    Feel free to use any of this code in your own projects, or ask any questions about it.

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