我有一个暗示要登录的应用程序(使用服务器请求),然后打开“真实应用程序”(在访问确认后)。我想使用Facebook和google +登录名为te用户简化工作。
出于应用程序注册的目的,我只需要发送电子邮件(如果使用了facebook或google +)。我正在尝试使用Facebook C#SDK API。
但是我有这个错误
附加信息:(OAuthException-#1)该请求无效,因为该应用程序被配置为桌面应用程序
这很奇怪,但它发生在这里:
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;
}`
其余代码
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并查看一些示例,但是我设法找到的示例似乎已经过时并且没有用。
我认为您应该使用类似以下内容的方法:
_accessToken = facebookOAuthResult.AccessToken;
var fb = new FacebookClient(facebookOAuthResult.AccessToken);
dynamic result = fb.Get("/me/?fields=birthday,email,name");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句