Windows 8应用程序的Facebook Feed对话框

时间:2013-01-16 00:48:37

标签: facebook-graph-api windows-8 microsoft-metro facebook-javascript-sdk winjs

我试图做一个共享链接的Windows 8应用程序......

我已经有了一个访问令牌。 如何打开Feed对话框?

我正在使用以下代码:

    var facebookURL =
    "https://www.facebook.com/dialog/feed" +
    "?display=popup" +
    "&app_id=" + FBI.appID +
    "&access_token=" + FBI.auth.getAccessToken() +
    "&link=http://apps.microsoft.com/windows/app/archery-master/172c7273-10a8-4519-8a66-68ec4dae12f1" +
    "&picture=http://wscont1.apps.microsoft.com/winstore/1x/0a119429-8795-4e0b-9f1a-d55bb5e8c2b1/Icon.70730.png" +
    "&name=Archery%20Master" +
    "&caption=I%20have%20a%20new%20best%20score" +
    "&description=My%20best%20score%20was%20300%20points" +
    "&redirect_uri=" + FBI.auth.callbackURL;

var startURI = new Windows.Foundation.Uri(facebookURL);
var endURI = new Windows.Foundation.Uri(FBI.auth.callbackURL);

Windows.Security.Authentication.Web.WebAuthenticationBroker.authenticateAsync(
    Windows.Security.Authentication.Web.WebAuthenticationOptions.dafault, startURI, endURI)
    .done(function (result) {
        switch (result.responseStatus) {
            case Windows.Security.Authentication.Web.WebAuthenticationStatus.errorHttp:

                break;
            case Windows.Security.Authentication.Web.WebAuthenticationStatus.success:

                break;
            default:

                break;
        }

    }, function (err) {

    });                            

但是,我遇到了以下错误:

API Error Code: 110

API Error Description: Invalid user id

Error Message: Missing user cookie (to validate session user)

建议吗?

2 个答案:

答案 0 :(得分:2)

在Windows应用商店应用中共享的最佳模式是使用Share Source contract。这样,您的应用就可以选择要分享的内容,同时让用户可以选择分享的位置和方式(例如,与之分享的应用)。

在应用中向特定提供商实施共享的缺点是MySpace现象。如果您编写的社交网络不会超过您的应用程序,会发生什么?您现在已经在应用中获得了需要维护的代码,但对用户的价值有限。出于同样的原因,如果出现新的社交网络,您将需要向您的应用添加代码以与其共享。

使用“共享源”合同,允许用户选择接收共享数据的应用程序,从而解决了这两个问题。如果他们希望与Facebook分享,他们可以选择支持该网络的应用程序。如果他们更喜欢Twitter,他们可以分享。

除非有一些非常令人信服的理由,否则我建议查看股票来源合约。您可以编写更少的代码,并为用户提供更大的灵活性,并且您的应用程序的行为将与Windows应用商店应用的用户期望的一样。

答案 1 :(得分:1)

尝试删除access_token行。

var facebookURL =
"https://www.facebook.com/dialog/feed" +
"?display=popup" +
"&app_id=" + FBI.appID +
//"&access_token=" + FBI.auth.getAccessToken() +
"&link=http://apps.microsoft.com/windows/app/archery-master/172c7273-10a8-4519-8a66-68ec4dae12f1" +
"&picture=http://wscont1.apps.microsoft.com/winstore/1x/0a119429-8795-4e0b-9f1a-d55bb5e8c2b1/Icon.70730.png" +
"&name=Archery%20Master" +
"&caption=I%20have%20a%20new%20best%20score" +
"&description=My%20best%20score%20was%20300%20points" +
"&redirect_uri=" + FBI.auth.callbackURL;

我尝试了你的代码,没有access_token行,它似乎能够显示对话框。

希望它有所帮助。