0

Это один, что я начинаю думать, что это ошибка, пожалуйста, пожалуйста, испытай меня неправильно:Android Facebook SDK и URL Методы формирования успешных Друзья Dialog, но не может совершать

Я хочу, чтобы программно друг пользователя на facebook; они только и, безусловно, кто-то, кто знает IRL.

Следующие три решения имеют одинаковый результат: диалог успешных друзей - значение имени профиля, изображения, утверждения, указывающего действие (другу-другу), и кнопок отказа/подтверждения; нажатие «confirm» - проблема: это приводит к ошибке Facebook, представленной в стандартном пользовательском интерфейсе fb: «Извините, что-то пошло не так. Мы работаем над тем, чтобы зафиксировать это, как только сможем». Мой пользователь вошел в систему, а идентификатор приложения fb (fb_app_id) является золотым, или родительская активность фрагмента не будет вызываться, мой идентификатор пользователя (Id) будет также золотой, подтвержденной их картиной профиля, отображающейся как в мое приложение и в диалоге друзей, действие «друзья /» верное - «друзья /?» дает мне хорошую ошибку «не найден», и OnCompleteListener отлично работает даже вокруг сообщения.

Первого путь с SDK, предпочтительный, если он работал:

Bundle params = new Bundle(); 
params.putString("id", Id); 
WebDialog requestsDialog = (
new WebDialog.Builder(this.getActivity(), 
     getString(R.string.fb_app_id), 
     "friends/", params) 
    .setOnCompleteListener(new CompleteListener()) 
    .build()); 
requestsDialog.show(); 

Сохранить явный вызов действия, который хорошо выглядит, не так ли? Это, безусловно, приводит меня к диалоговому окну подтверждения; второй путь является быстрым и грязным, но он должен работать:

String requestUrl = "https://www.facebook.com/dialog/friends/?id="+ 
    Id+"&app_id="+getString(R.string.fb_app_id)+ 
    "&redirect_uri=http://www.facebook.com"; 
WebDialog requestDialog = new WebDialog(this.getActivity(), requestUrl); 
requestDialog.show(); 

Но это не так; такой же квази-успешный результат. Третий способ - я просто проверял, чтобы я не был идиотом, и по существу является предложением в этом сообщении Facebook friends dialog returns "Unknown method" error , но с WebDialogs (моя реализация OnCompleteListener) вместо устаревшей библиотеки. То же самое, такое же сообщение.

Это не сообщение об ошибке, это/для/меня, вы знаете? Является ли это устаревшим API-вызовом? Является ли сообщение об ошибке буквально правильным, и хорошие люди в fb знают об этом? Есть ли какой-то пара, которого я действительно здесь не хватает? Не похоже, что они не вошли! Я как бы нахожусь в этом на уме, заблаговременно за помощь/советы/успокаивающие слова. -AnB

P.S. «Приятель» выглядит забавно, когда вы его пишете. AB

ответ

0

является ошибкой на facebook, о которой они знают, и о том, что они не собираются исправлять в ближайшее время (недостаток в таланте разработчика? «Стратегия»? Я спрошу Марка ...). Услышав эту неприемлемую новость, я затем попробовал URL-адрес в хроме несколько разных способов и большой сюрприз: он отлично работает, когда вы запрашиваете сайт рабочего стола на экране подтверждения.

Итак, есть один путь, оставленные нам мобильные дэвы, и это сделать диалог, остроги в WebView с

  1. настольным кажущимся агент пользователем
  2. URL, переопределение, чтобы остановить фб сайт перенаправлять через Intent.ACTION_VIEW

вот моя реализация (в виде фрагмента):

private void sendRequestDialog() { 
    String requestUri = "https://www.facebook.com/dialog/friends/?id="+ 
     Id+"&app_id="+getString(R.string.fb_app_id)+ 
     "&redirect_uri=http://www.facebook.com"; 
    WebView webView = new WebView(this.getActivity()); 
    webView.getSettings().setUserAgentString(getString("Mozilla/5.0 (X11; Linux x86_64; rv:10.0) Gecko/20100101 Firefox/10.0")); 
    webView.setWebViewClient(new WebViewClient(){ 
     public boolean shouldOverrideUrlLoading(WebView view, String url){ 
      return false; 
     } 
    }); 
    webView.loadUrl(requestUri); 
    AlertDialog.Builder dialog = new AlertDialog.Builder(this.getActivity()); 
    dialog.setView(webView); 
    dialog.setPositiveButton("Done", new DialogInterface.OnClickListener() { 

      public void onClick(DialogInterface dialog, int which) { 

       dialog.dismiss(); 
      } 
     }); 
    dialog.show(); 

Конечно, вы захотите сделать ссылки на эти строки, но это работает и хорошо выглядит в пользовательском интерфейсе.

Вперед! -AnB