Intereting Posts

Получить список друзей facebook 3.0

Я пытаюсь получить список друзей из facebook с помощью нового SDK (3.0). Я сталкиваюсь с проблемами, связанными с тем, какие параметры мне нужно вставить в Bundle и как использовать newMyFriendRequest и GraphAPI.

Я не нашел в документации на facebook место о том, какое поле мы должны использовать. Основываясь на GraphExplorer, я вставляю в свой Bundle ключевые «поля» с этой строкой «id, name, friend» в качестве значения. В приведенном ниже коде показано, что я делаю прямо сейчас. После того, как я получу свою фотографию и имя, я выполняю newMyFriendRequest. Я считаю, что он использует GraphAPI по умолчанию.

Я видел здесь в StackOverflow некоторые сообщения, связанные с:

Как отправить запрос FQL с новым Android SDK

Параметры запроса Android Android SDK: где найти документацию?

Мне это мало помогает, и я не хочу использовать FQL. Для ответа II'm получаю этот JSON как ответ:

{Response: responseCode: 500, graphObject: null, error: {HttpStatus: 500, errorCode: 100, errorType: FacebookApiException, errorMessage: Unsupported operation}, isFromCache:false} 

Заметьте, что я очень новичок в Facebook SDK для Android.

 private void onSessionStateChange(final Session session, SessionState sessionState, Exception ex){ if(session != null && session.isOpened()){ getUserData(session); } } private void getUserData(final Session session){ Request request = Request.newMeRequest(session, new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { if(user != null && session == Session.getActiveSession()){ pictureView.setProfileId(user.getId()); userName.setText(user.getName()); getFriends(); } if(response.getError() !=null){ } } }); request.executeAsync(); } private void getFriends(){ Session activeSession = Session.getActiveSession(); if(activeSession.getState().isOpened()){ Request friendRequest = Request.newMyFriendsRequest(activeSession, new GraphUserListCallback(){ @Override public void onCompleted(List<GraphUser> users, Response response) { Log.i("INFO", response.toString()); } }); Bundle params = new Bundle(); params.putString("fields", "id,name,friends"); friendRequest.setParameters(params); friendRequest.executeAsync(); } } 

Solutions Collecting From Web of "Получить список друзей facebook 3.0"

В методе getFriends () измените эту строку:

 params.putString("fields", "id,name,friends"); 

от

 params.putString("fields", "id, name, picture"); 

Использование запроса FQL

 String fqlQuery = "SELECT uid,name,pic_square FROM user WHERE uid IN " + "(SELECT uid2 FROM friend WHERE uid1 = me())"; Bundle params = new Bundle(); params.putString("q", fqlQuery); Session session = Session.getActiveSession(); Request request = new Request(session, "/fql", params, HttpMethod.GET, new Request.Callback(){ public void onCompleted(Response response) { Log.i(TAG, "Result: " + response.toString()); try{ GraphObject graphObject = response.getGraphObject(); JSONObject jsonObject = graphObject.getInnerJSONObject(); Log.d("data", jsonObject.toString(0)); JSONArray array = jsonObject.getJSONArray("data"); for(int i=0;i<array.length();i++){ JSONObject friend = array.getJSONObject(i); Log.d("uid",friend.getString("uid")); Log.d("name", friend.getString("name")); Log.d("pic_square",friend.getString("pic_square")); } }catch(JSONException e){ e.printStackTrace(); } } }); Request.executeBatchAsync(request); 

Ссылка : Запуск запросов FQL

Это должно работать:

 // @Deprecated // Request.executeMyFriendsRequestAsync() // Use this instead: Request.newMyFriendsRequest(session, new GraphUserListCallback() { @Override public void onCompleted(List<GraphUser> users, Response response) { if(response.getError() == null) { for (int i = 0; i < users.size(); i++) { Log.e("users", "users " + users.get(i).getName()); } } else { Toast.makeText(MainActivity.this, response.getError().getErrorMessage(), Toast.LENGTH_SHORT).show(); } } }); 

К сожалению, Facebook удаляет эти разрешения.

/ Me / friends возвращает друзей пользователя, которые также используют ваше приложение.

В версии 2.0 конечная точка API друзей возвращает список друзей человека, которые также используют ваше приложение. В версии 1.0 ответ включал всех друзей человека.

В версии 1.0 можно было запрашивать разрешения, позволяющие приложению видеть ограниченное количество данных друзей, таких как друзья друга, их дни рождения и т. Д.

В версии 2.0 все разрешения были удалены. Приложение больше не может видеть данные от друзей пользователя, если эти друзья также не вошли в приложение и не предоставили разрешение для приложения, чтобы увидеть, что данные

https://developers.facebook.com/docs/apps/upgrading#v2_0_friendlist_title

Вы можете использовать мой код, вам нужно использовать библиотеку facebook в своем проекте. Все классы, используемые для facebook, есть в этом sdk.

 private void onSessionStateChange(Session session, SessionState state, Exception exception) { if (state.isOpened()) { Log.i(TAG, "Logged in..."); Request.executeMyFriendsRequestAsync(session, new GraphUserListCallback() { @Override public void onCompleted(List<GraphUser> users, Response response) { Log.i("Response JSON", response.toString()); names = new String[users.size()]; id = new String[users.size()]; for (int i=0; i<users.size();i++){ names[i] = users.get(i).getName(); id[i]= users.get(i).getId(); } } }); } else if (state.isClosed()) { Log.i(TAG, "Logged out..."); } } 

Имена и идентификаторы – это два массива String и теперь имеют имена и имена друзей. Надеюсь, он решает вашу проблему.

Чтобы человек спросил, как obtein имя и фамилия, вам нужно поместить first_name и last_name вместо имени.

 params.putString("fields", "id, first_name, last_name, picture"); 

Используйте следующий код, чтобы получить список друзей из Facebook. Он покажет только данные тех пользователей, которые сделали приложение Facebook с помощью приложения, а у пользователей есть идентификатор Facebook в базе данных. То это покажет список этих друзей.

FacebookFriendListActivity.java

 package com.application.Activity; import android.app.Activity; import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ListView; import android.widget.TextView; import android.widget.Toast; import com.facebook.HttpMethod; import com.facebook.Request; import com.facebook.RequestBatch; import com.facebook.Response; import com.facebook.Session; import com.facebook.SessionDefaultAudience; import com.facebook.SessionLoginBehavior; import com.facebook.SessionState; import com.facebook.internal.SessionTracker; import com.facebook.internal.Utility; import com.facebook.model.GraphObject; import com.facebook.model.GraphUser; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Map; import Info.InfoUsers; import india.application.upflair.Adapter.FindPeopleAdapter; import india.application.upflair.R; import utills.ConnectionDetector; import utills.Constant; public class FacebookFriendListActivity extends AppCompatActivity { //facebook section SessionTracker mSessionTracker; Session mCurrentSession = null; String facebook_id; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.listview); signInWithFacebook(); } /*** * facebook section to get friend list */ private void signInWithFacebook() { mSessionTracker = new SessionTracker(getBaseContext(), new Session.StatusCallback() { @Override public void call(Session session, SessionState state, Exception exception) { //TODO.. } }, null, false); String applicationId = Utility.getMetadataApplicationId(getBaseContext()); mCurrentSession = mSessionTracker.getSession(); mSessionTracker.setSession(null); Session session = new Session.Builder(getBaseContext()).setApplicationId(applicationId).build(); Session.setActiveSession(session); mCurrentSession = session; if (!mCurrentSession.isOpened()) { Session.OpenRequest openRequest = null; openRequest = new Session.OpenRequest(FacebookFriendListActivity.this); if (openRequest != null) { openRequest.setDefaultAudience(SessionDefaultAudience.FRIENDS); openRequest.setPermissions(Arrays.asList("user_birthday", "email", "user_location", "user_friends")); openRequest.setLoginBehavior(SessionLoginBehavior.SSO_WITH_FALLBACK); mCurrentSession.openForRead(openRequest); accessFacebookUserInfo(); } } else { accessFacebookUserInfo(); } } Request friendListRequest = null; private void accessFacebookUserInfo() { if (Session.getActiveSession() != null & Session.getActiveSession().isOpened()) { Request cover_request = new Request(Session.getActiveSession(), "me", null, HttpMethod.GET, new Request.Callback() { @Override public void onCompleted(Response response) {} }); Request.executeBatchAsync(cover_request); Request meRequest = Request.newMeRequest(Session.getActiveSession(),new Request.GraphUserCallback() { @Override public void onCompleted(GraphUser user, Response response) { try { friendListRequest.executeAsync(); } catch (Exception jex) { jex.printStackTrace(); } } }); RequestBatch requestBatch = new RequestBatch(meRequest); requestBatch.addCallback(new RequestBatch.Callback() { @Override public void onBatchCompleted(RequestBatch batch) {} }); requestBatch.executeAsync(); friendListRequest = new Request(Session.getActiveSession(), "/me/friends", null, HttpMethod.GET, new Request.Callback() { @Override public void onCompleted(Response response) { try { GraphObject graphObj = response.getGraphObject(); if (graphObj != null) { JSONObject jsonObj = graphObj.getInnerJSONObject(); JSONArray data=jsonObj.getJSONArray("data"); if(data.length()>0 && data!=null) { for(int i=0;i<data.length();i++) { JSONObject dataobj= data.getJSONObject(i); String name=dataobj.getString("name"); String id=dataobj.getString("id"); System.out.println("name==============" + name); System.out.println("id==============" + id); facebooklist.add(id); facebook_id = facebooklist.toString().replace("[", ""); facebook_id = facebook_id.replace("]", ""); } } } } catch (Exception e) { e.printStackTrace(); } } }); } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { Session.getActiveSession().onActivityResult(this, requestCode, resultCode, data); if (mCurrentSession.isOpened()) { accessFacebookUserInfo(); } else { Toast.makeText(mContext, "some thing went wrong plz try later", Toast.LENGTH_LONG).show(); } } else { Toast.makeText(mContext, "some thing went wrong plz try later", Toast.LENGTH_LONG).show(); mCurrentSession = null; mSessionTracker.setSession(null); } } }