Я боролся с android и API графиков Facebook, и я уверен, что это - кусок пирога для программистов среднего уровня.То, что я хочу, - это очень простое приложение для Android, которое регистрирует пользователя в Facebook, дает согласие пользователей на доступ к информации и, наконец, бесшовно запрашивает API графика, чтобы получить друзей пользователей.Я упомянул работу без шва, потому что я видел много примеров приложений, которые требуют, чтобы пользователь нажал кнопку «найти друзей», но я этого не хочу.Я хочу извлечь друзей пользователей, не требуя, чтобы он что-либо нажимал.
Я вставил код ниже.Я могу войти в систему и дать разрешение на мое приложение.Далее, я ожидаю, что он покажет моих друзей, но он просто направит меня на пустую страницу.Возможно, проблема в том, что я получаю доступ к API графа не в том месте, потому что Logcat не содержит сообщений, которые я печатаю до и после запроса .Не могли бы вы мне помочь.
открытый класс FacebookLogin расширяет активность {
Facebook mFacebook = new Facebook("XXXXXXXXXXXX");
AsyncFacebookRunner mAsyncRunner = new AsyncFacebookRunner(mFacebook);
View linearLayout;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
linearLayout = findViewById(R.id.main_layout);
mFacebook.authorize(this, new DialogListener() {
@Override
public void onComplete(Bundle values)
{
Log.d("Facebook-Example-Friends Request", "Started API request");
mAsyncRunner.request("me/friends", new FriendsRequestListener());
Log.d("Facebook-Example-Friends Request", "Finished API request");
}
@Override
public void onFacebookError(FacebookError error) {}
@Override
public void onError(DialogError e) {}
@Override
public void onCancel() {}
});
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
mFacebook.authorizeCallback(requestCode, resultCode, data);
}
public class FriendsRequestListener implements RequestListener
{
/**
* Called when the request to get friends has been completed.
* Retrieve, parse and display the JSON stream.
*/
public void onComplete(final String response)
{
Log.d("Facebook-Example-Friends Request", "FriendsListenerOnComplete");
try
{
JSONObject json = Util.parseJson(response);
final JSONArray friends = json.getJSONArray("data");
FacebookLogin.this.runOnUiThread(new Runnable()
{
public void run()
{
int l = (friends != null ? friends.length() : 0);
for (int i=0; i<l; i++)
{
try
{
JSONObject o = friends.getJSONObject(i);
TextView tv = new TextView(FacebookLogin.this);
tv.setText(o.getString("name"));
((LinearLayout) linearLayout).addView(tv);
}
catch(JSONException e)
{
Toast.makeText(getApplicationContext(), "JSON parsing error", Toast.LENGTH_LONG);
}
}
}
});
}
catch(JSONException e)
{
Log.d("Facebook-Example-Friends Request", "JSON Error in response");
}
catch(FacebookError e)
{
Log.d("Facebook-Example-Friends Request", "Facebook Error in response");
}
}
}
}