1

asp.net Web アプリケーションの facebook_login ページの Page_Load で次のコードを使用しています。この URL をリダイレクトした後、URL にアクセストークンを取得しましたが、HttpContext.Current.Request.Url.AbsoluteUri を介してこの現在の URL にアクセスしようとすると、現在ウィンドウにある URL ではなく、公開されているアプリの URL が返されました。

このアクセス トークンまたはユーザーの詳細にアクセスするにはどうすればよいですか?

var uriParams = new Dictionary<string, string>() {
                    {"client_id", facebookAppId},
                    {"response_type", "token"},
                    {"scope", "user_about_me, read_stream, email"},
                    {"redirect_uri", "http://apps.facebook.com/appNameHere/"}
                }; 
        StringBuilder urlBuilder = new StringBuilder();
        foreach (var current in uriParams)
        {
            if (urlBuilder.Length > 0)
            {
                urlBuilder.Append("&");
            }
            var encoded = HttpUtility.UrlEncode(current.Value);
            urlBuilder.AppendFormat("{0}={1}", current.Key, encoded);
        }
        var loginUrl = "http://www.facebook.com/dialog/oauth?" + urlBuilder.ToString();
        Response.Redirect(loginUrl);
4

1 に答える 1

1

Facebook では、Web アプリケーションを指すコールバック URL値を設定できます。したがって、http://www.facebook.com/dialog/oauthFacebook にリクエストを送信し、ログインに成功すると、コールバック URL (Web アプリケーション) にリダイレクトされます。

https://graph.facebook.com/oauth/access_token 次に、次のように url を呼び出す必要があります。

        StringBuilder uri = new StringBuilder();
        uri.Append("https://graph.facebook.com/oauth/access_token?");
        uri.Append("client_id=" + ClientKey + "&");
        uri.Append("redirect_uri=" + Curl + "&");
        uri.Append("scope=offline_access&");
        uri.Append("client_secret=" + ClientSecret + "&");
        uri.Append("code=" + OAuthCode);

        HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uri);
        req.Headers.Add("Authorization", String.Empty);            
        req.Method = "POST";
        req.ServicePoint.Expect100Continue = false;
        req.ContentLength = 0;
        req.ContentType = "application/x-www-form-urlencoded";

        HttpWebResponse resp;
        try
        {
            resp = (HttpWebResponse)req.GetResponse();
            System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
            string result = sr.ReadToEnd().Trim();
            string[] resultCollection = Regex.Split(result, "&");
            string access_token = Regex.Split(resultCollection[0], "=")[1];//This is the access token
            //which you want and you can save it to database or some  where for further use.
        }
        catch (WebException ex)
        {
            resp = (HttpWebResponse)ex.Response;

            //pass on the exception
            throw ex;
        }

アップデート :

このように取得できるOAuthCodeは、ログインに成功した後、FBがWebアプリページにリダイレクトされたときに使用できます

OAuthCode = Request.Params["code"];

空のように渡すことができるヘッダーString.Empty

于 2013-03-19T04:51:44.107 に答える