0

だから私は何日も前からこれを試してきました。どこにも何も見つかりませんでした。

Facebook Android SDK で [フレンド] ダイアログを呼び出そうとすると、次のエラーが返されます。

API エラー コード: 3
API エラーの説明: 不明なメソッド
エラー メッセージ: このメソッドは、この表示タイプではサポートされていません

ドキュメンテーション ページには、タッチ デバイスではフレンド ダイアログが許可されていないことを示すものは見つかりませんでした。これを行うには、次のコードを使用しています。

Bundle params = new Bundle();
params.putString("id", "brent");
Log.i("In on click", params.toString());
SampleDialogListener());
mFacebook.dialog(TestActivity.this, "friends", params, new SampleDialogListener());

許可されていない場合、アプリケーション内から友達リクエストを送信する別の方法はありますか?

4

3 に答える 3

6

根本的な問題は、Facebook API がまだすべての表示タイプに対応していないことと、友達ダイアログをモバイル ディスプレイに表示できないことです。できることは、Facebook Android ライブラリを変更することです。ダイアログを開くときに、「タッチ」の代わりに「ポップアップ」表示モードを使用し、m.facebook.com の代わりに www.facebook.com を使用すると、適切なウィンドウがFacebook ライブラリの標準 WebView。

このために、Facebook.java のダイアログ関数を次のように変更します。

protected static String DIALOG_BASE_URL = "https://m.facebook.com/dialog/";
protected static String DIALOG_BASE_URL_FOR_MISSING_SCREENS = "https://www.facebook.com/dialog/";

public void dialog(Context context, String action, Bundle parameters,
        final DialogListener listener) {

    boolean missingScreen = action.contentEquals("friends") ? true : false;

    String endpoint = missingScreen ? DIALOG_BASE_URL_FOR_MISSING_SCREENS : DIALOG_BASE_URL;
    endpoint += action;

    parameters.putString("display", missingScreen ? "popup" : "touch");
    parameters.putString("redirect_uri", REDIRECT_URI);

    if (action.equals(LOGIN)) {
        parameters.putString("type", "user_agent");
        parameters.putString("client_id", mAppId);
    } else {
        parameters.putString("app_id", mAppId);
    }

    if (isSessionValid()) {
        parameters.putString(TOKEN, getAccessToken());
    }
    String url = endpoint + "?" + Util.encodeUrl(parameters);
    if (context.checkCallingOrSelfPermission(Manifest.permission.INTERNET)
            != PackageManager.PERMISSION_GRANTED) {
        Util.showAlert(context, "Error",
                "Application requires permission to access the Internet");
    } else {
        new FbDialog(context, url, listener).show();
    }
}

その後、ダイアログからダブル タイトル バーを削除することもできます。FbDialog.java に移動し、onPageFinished のようなものを挿入します。

if (url.contains("friends?")) {
    mTitle.setHeight(0);
    mTitle.setVisibility(View.INVISIBLE);
}
于 2011-05-31T16:19:02.623 に答える
2

動作します。

class Facebook_friendsPatch extends Facebook { 
   protected static String DIALOG_BASE_URL = "https://m.facebook.com/dialog/";
   protected static String DIALOG_BASE_URL_FOR_MISSING_SCREENS = "https://www.facebook.com/dialog/";
   protected static final String LOGIN = "oauth"; 
   protected String appId ; 

   public Facebook_friendsPatch(String app) {    
      super(app) ; 
      appId = app ; 
   }

   public void dialog(Context context, String action, Bundle parameters,
                      final DialogListener listener) {
      // copy from above 
   } 
}
于 2012-08-05T16:58:56.183 に答える
0

このチュートリアルには、facebook API でダイアログを使用する例があります。

于 2011-03-21T03:05:03.457 に答える