c# - Facebook .NET 客户端 SDK 是否支持通过 AppStudio 生成的通用应用程序/应用程序?

标签 c# .net facebook windows-phone-8.1 facebook-c#-sdk

我通过 Microsoft 的 AppStudio 创建了一个通用应用程序。 我尝试按照“美味教程”(http://facebooksdk.net/docs/phone/tutorial/)向应用程序添加 Facebook 身份验证。

当我在手机上运行该应用程序时,我永远无法进入 facebook 登录页面,因为以下行:await App.FacebookSessionClient.LoginAsync("user_about_me,read_stream");

总是导致以下异常:

System.NotImplementedException: Not implemented<br/> at Windows.Security.Authentication.Web.WebAuthenticationBroker.AuthenticateAsync(WebAuthenticationOptions options, Uri requestUri, Uri callbackUri) at Facebook.Client.FacebookSessionClient.d__24.MoveNext()

异常的来源是 FacebookSessionClient.cs 中的这个调用(facebook-client 包): var result = await WebAuthenticationBroker.AuthenticateAsync(options, startUri, endUri);

手机好像没有实现这个功能。我仍然想知道引用完全相同代码的 turial 怎么可能会起作用。

最佳答案

它尚未在 8.1 中实现。如果你想在 8.1 中使用 Facebook 身份验证,你可以使用以下方法:

在您的 App 类中:

private const string RedirectUrl = "https://www.facebook.com/connect/login_success.html";
private static readonly IReadOnlyCollection<string> Permissions = new[] { "email", "offline_access" };

protected override void OnActivated(IActivatedEventArgs args)
{
    base.OnActivated(args);
    var continuationActivatedEventArgs = args as IContinuationActivatedEventArgs;
    if (continuationActivatedEventArgs == null)
        return;
    var webAuthenticationResult = ((WebAuthenticationBrokerContinuationEventArgs)continuationActivatedEventArgs).WebAuthenticationResult;
    if (webAuthenticationResult.ResponseStatus == WebAuthenticationStatus.Success)
    {
        var facebookClient = new FacebookClient();
        var result = facebookClient.ParseOAuthCallbackUrl(new Uri(webAuthenticationResult.ResponseData));
        if (!result.IsSuccess)
        {
            // Process unsuccessful authentication
        }
        else
        {
            // Process successful authentication
            var accessToken = result.AccessToken;
        }
    }
}

// Authentication method, this method should be invoked when you click Facebook authentication button
public void AuthenticateAndContinue()
{
    var loginUrl = GetLoginUrl();
    WebAuthenticationBroker.AuthenticateAndContinue(loginUrl, new Uri(RedirectUrl));
}

private Uri GetLoginUrl()
{
    var parameters = new Dictionary<string, object>();
    parameters["client_id"] = "YourFacebookApplicationId";
    parameters["redirect_uri"] = RedirectUrl;
    parameters["response_type"] = "token";
    parameters["display"] = "touch";
    parameters["mobile"] = true;
    parameters["scope"] = String.Join(",", Permissions);

    var facebookClient = new FacebookClient();

    return facebookClient.GetLoginUrl(parameters);
}

我把所有东西都放在一个地方只是为了举例,最好把fb认证逻辑分开。 您可以在这里找到这种方法 MSDN Windows Phone 8.1 Web Authentication samples

关于c# - Facebook .NET 客户端 SDK 是否支持通过 AppStudio 生成的通用应用程序/应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26307586/

相关文章:

java - 比较树节点

c# - .net Core amd Roslyn CSharpCompilation,类型 'Object' 在未引用的程序集中定义

ios - iOS:Facebook登录错误

c# - CallMethodAction 绑定(bind)到 Button 失败

c# - 如何更改 Windows 语音识别输出?

.net - HtmlUnit 不等待 AJAX 执行

ios - QuickBlox v2.6 Facebook 登录问题

facebook - 最大可能的共同 friend 群体?

c# - Visual Studio 2015 调试输出显示 "Application Insights Telemetry: {"名称“:"Microsoft.ApplicationInsights.XXX.RemoteDependency"

c# - LINQ 查询性能低下