0

Facebook アプリケーション (ASP.NET C# と Nathan Totten の Facebook C# SDK を使用) を開発しており、拡張アクセス許可にアクセスしようとしています。私はローカルホストで(Facebookの既存のアプリで)試してみましたが、誰もが動作します. しかし、Facebook で直接使用しようとすると、空白のページが表示されます (まだ Facebook に接続しています)。

これが私のコードです:

ページ/aspx:

protected void btn_ask_question_Click(object sender, EventArgs e)
    {
        if (ControllerAccess.testUserConnected())
        {
            if (txt_ask_question.InnerText != "")
            {
                Dictionary<string, object> action = new Dictionary<string,object>();
                action.Add("action", "askQuestion");
                action.Add("message", txt_ask_question.InnerText);
                action.Add("idTheme", ddl_choose_question_category.SelectedValue);
                HttpContext.Current.Session["ActionToDo"] = action;
                String s = Controller.GetExtendedPermission2(this, ControllerAccess.getScopeByAction("askQuestion"));
                try{
                    Response.Redirect(s, false);
                } catch(Exception ex)
                {
                }
            }
        }
    }

私の Page_Load() で:

if (HttpContext.Current.Session["ActionToDo"] != null)
            {
                Dictionary<string, object> action = HttpContext.Current.Session["ActionToDo"] as Dictionary<string, object>;
                String s = action["action"].ToString();
                switch (s)
                {
                    case "askQuestion":
                        Guid idTheme;
                        Boolean themeExists =  Guid.TryParse(action["idTheme"].ToString(), out idTheme);
                        if(themeExists)
                        {
                            askQuestion(action["message"].ToString(), idTheme);
                            lbl_errors.Text = "Votre question a bien été posée";
                        }
                        break;
                    default:
                        break;
                }
                HttpContext.Current.Session["ActionToDo"] = null;
            }

Control.cs で:

    public static string GetCustomOAuthDialogParameters(string AppID, string RedirectURI, string Scope, string State)
    {
        string CustomParameters = "?client_id=" + AppID + "&redirect_uri=" + RedirectURI + "&scope=" + Scope + "&state=" + State;
        return CustomParameters;
    }

    public static void GetExtendedPermission(Page page, String scope)
    {

        ecritureFichier("GetExtendedPermission");
        Label lbl_errors = page.Form.FindControl("lbl_errors") as Label;
        string OAuthDialogAbsoluteURL = "";
        try
        {
            string OAuthDialogURL = "https://www.facebook.com/dialog/oauth";
            string PageLocation = GetCurrentPageFacebookPublishedPath(page.Request); //The redirect page (eg: https://apps.facebook.com/democsharpsdk/TestsExtendedPermission.aspx)
            string UniqueReferenceCode = Guid.NewGuid().ToString();

            OAuthDialogAbsoluteURL = OAuthDialogURL + GetCustomOAuthDialogParameters(AppID, PageLocation, scope, UniqueReferenceCode);
            page.Response.Redirect(OAuthDialogAbsoluteURL, false);
        }
        catch (Exception exp)
        {
            lbl_errors.Text += "Erreur Catchée via ASP.NET : " + exp.Message;
        }
    }

次の行を使用すると、空白のページが表示されます: page.Response.Redirect(OAuthDialogAbsoluteURL, false);

しかし、私はすべてのステップを記録し、私の OAuthDialogAbsoluteURL は正しいです:

https://www.facebook.com/dialog/oauth?client_id=XXXXXXXXXXXXXXXXX&redirect_uri=https://apps.facebook.com/name_of_my_app&scope=email&state=0443030f-dddd-4fe6-9d6c-9454409d01b3

アドレスバーに手動で入力すると、すべてが正しく機能します。

ローカル バージョンと公開バージョンの違い、またはリダイレクトが機能しない理由について何か考えはありますか? 多分Facebookはいくつかのリクエストをブロックしますか?

ありがとう。

4

2 に答える 2

0

私はついにChromeデバッガーを使用して問題を解決しました。エラーは:

Refused to display document because display forbidden by X-Frame-Options

私はそれを修正するためにJavascriptを使用し、次のようにリダイレクトしました:

Response.Write("<script>");
Response.Write("window.open('"+redirect+"','_top')");
Response.Write("</script>");

それが何人かの人々を助けることを願っています。

于 2012-06-19T08:22:19.727 に答える
0

アプリを使用してさまざまな環境をテストする場合は、設定がホストされているバージョンを指していることを確認してください。Facebookでは、セキュリティ上の理由から、アプリに接続していないサイトのユーザーを承認することはできません。

通常、「URLはアプリケーションによって所有されていません」などのエラーが表示されます。

于 2012-06-14T14:26:41.363 に答える