3

Windows コンピューターで実行される .NET アプリを作成しています。ブラウザからはアクセスできません。問題は、本来あるべきように認証できないことです。私は現在、C# .NET でコーディングしています。より具体的には C# でコーディングしています。

  • フォームに Web ブラウザー コントロールがあります。
  • ユーザーは、この Web ブラウザー コントロールを介して facebook にログオンします。
  • ログオン後、認証手続きを開始します。
  • 次に、コードを取得します。

ここが間違っているところです。このコードを使用して、アクセス トークンを取得します。生成されたリクエスト URL は次のようhttps://graph.facebook.com/oauth/access_token?client_id=____MY_APP_ID______&redirect_uri=http://localhost/&client_secret=_____MY_APP_SECRET_____&code=____MY_RETREIVED_CODE_____になります。以下のコードで作成されます。

私のリダイレクト URL はhttp://localhost. これで大丈夫ですよね?

また、私のアプリ設定には、次の情報があります。

サイト URL:http://localhost/ サイト ドメイン: localhost

private String ExchangeCodeForToken(String code, Uri redirectUrl)
{
    var TokenEndpoint = new Uri("https://graph.facebook.com/oauth/access_token");
    var url = TokenEndpoint + "?" +
                      "client_id=" + _AppID + "&" +
                      "redirect_uri=" + redirectUrl + "&" +
                      "client_secret=" + _AppSecret + "&" +
                      "code=" + code;
    var request = WebRequest.CreateDefault(new Uri(url));
    using (var response = request.GetResponse())
    {
        using (var responseStream = response.GetResponseStream())
        {
            using (var responseReader = new StreamReader(responseStream))
            {
                var responseText = responseReader.ReadToEnd();
                var token = responseText.Replace("access_token=", "");
                return token;
            }
        }
     }
}

これを実行すると、次のエラーが発生します。

エラー http://www.imageupload.org/getfile.php?id=50131&a=447f6fcc0ebd4d3f8e8a59a3a6e36ac3&t=4de0841c&o=0889D68FDC35508BA2C6F2689FCBAB7C30A8670CC9647EE598701D8BEC13ED279=Dauthn18F18F90エラー

Webexception はユーザー コードによって処理されませんでした リモート サーバーがエラーを返しました: (400) Bad Request。

ここで私は間違っているかもしれないと思うところです:

  • アプリの設定は正しいですか?
  • http://localhost実際にリッスンしているサービスがなくても、リダイレクト URL はである必要がありますか?

最も重要なこと:

  • このエラーを取り除き、アクセス トークンを取得するにはどうすればよいですか?

前もって感謝します!

4

2 に答える 2

2

デスクトップアプリからこのURLを呼び出すことは想定されていないため、このエラーが発生します。私が知る限り、デスクトップアプリの認証にトークンエンドポイントを使用することはできません。また、アクセストークンを直接取得することもできます(最初にコードを要求する必要はありません)。これがあなたがしなければならないことです。

埋め込みWebブラウザに次のURLをロードします。

https://www.facebook.com/dialog/oauth?
  client_id=YOUR_APP_ID&
  redirect_uri=https://www.facebook.com/connect/login_success.html

ユーザーはログインするように求められ、URLにアクセストークンを使用してこのURLにリダイレクトされます。

https://www.facebook.com/connect/login_success.html#access_token=...

したがって、リダイレクトを検出し、URLからアクセストークンを取得する必要があります。

于 2011-05-28T02:49:49.883 に答える
0

ありがとうクインテン!

ただし、C# Facebook SDK を使用して、自分の問題を解決することができました。このソフトウェア開発キットは本当に助かりました!

多数のサンプルが含まれています(承認を含む)

facebook を使用して .NET でプログラミングを行っている人は、ぜひチェックしてください。Facebook のコーディングがはるかに簡単になりました。

http://facebooksdk.codeplex.com/

于 2011-05-28T20:43:39.017 に答える