首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用facebook登录桌面应用程序

使用facebook登录桌面应用程序
EN

Stack Overflow用户
提问于 2016-07-14 13:09:12
回答 1查看 1.9K关注 0票数 2

我有一个应用程序,它意味着登录(使用服务器请求),然后打开“真正的应用程序”(在访问确认之后)。我想让te用户更容易使用facebook和google+登录。

为了应用程序注册的目的,我只需要发送电子邮件(如果使用facebook或google+ )。我正在尝试使用Facebook。

但我犯了个错误

附加信息:(OAuthException - #1)请求无效,因为应用程序被配置为桌面应用程序。

这很奇怪,但它发生在这里:

代码语言:javascript
运行
复制
public string GetAccessToken(FacebookOAuthResult oauthResult)
    {
        var client = new FacebookClient();
        dynamic result = client.Get("oauth/access_token",
        new
        {
            client_id = appId,
            client_secret = secret,
            redirect_uri = redirectUri,
            code = oauthResult.Code
        });
        return result.access_token;
    }`

其余的代码

代码语言:javascript
运行
复制
protected Uri GetLoginUrl()
        {
            FacebookClient a = new FacebookClient();
            var fbLoginUri = a.GetLoginUrl(new
            {
                client_id = appId,
                redirect_uri = "https://www.facebook.com/connect/login_success.html",
                response_type = "code",
                display = "popup",
                scope = "email"
            });
            return fbLoginUri;
        }
private void Window_Loaded_1(object sender, RoutedEventArgs e)
        {
            try
            {
                var loginUrl = GetLoginUrl();
                MyWebBrowser.Navigate(loginUrl);
            }
            catch (Exception ex) { }
        }
private void MyWebBrowser_Navigated(object sender, NavigationEventArgs e)
        {
            var fb = new FacebookClient();
            FacebookOAuthResult oauthResult;
            if (!fb.TryParseOAuthCallbackUrl(e.Uri, out oauthResult))
                return;
            if (oauthResult.IsSuccess)
                LoginSucceeded(oauthResult);
            else
                LoginFailed(oauthResult);
        }
public void LoginSucceeded(FacebookOAuthResult oauthResult)
        {
            // Hide the Web browser
            MyWebBrowser.IsEnabled = false;
            // Grab the access token (necessary for further operations)
            var tokenLoc = GetAccessToken(oauthResult);
            token = tokenLoc;
            var aux = new FacebookClient(token);
            aux.GetTaskAsync("fields", "id,name,email"); //Test, I want this variables
        }

我试着理解API,也想看看一些例子,但是我找到的那些似乎已经过时了,而且没有奏效。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-03-03 16:28:08

我认为你应该用这样的方法:

代码语言:javascript
运行
复制
    _accessToken = facebookOAuthResult.AccessToken;
    var fb = new FacebookClient(facebookOAuthResult.AccessToken);
    dynamic result = fb.Get("/me/?fields=birthday,email,name");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38375148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档