【问题标题】:Accessing facebook for posts etc with Graph API c# unity3d使用 Graph API c# unity3d 访问 facebook 以获取帖子等
【发布时间】:2012-04-11 14:46:54
【问题描述】:

我在 MonoDevelop 中使用 C# 和 Graph API 来与用户的 Facebook 页面进行交互。

不过我已经彻底糊涂了。

这些步骤正确吗?

  1. 在这里创建 facebook 应用程序:http://developers.facebook.com/
  2. 使用应用 ID 和应用机密以编程方式获取访问令牌。

如果是这样,我该如何从这个到发布到用户墙?

我做了很多研究,但找不到任何特别有用的东西。

我试过使用这个ASP.NET Post to Facebook Wall,但墙上什么都没有。

是否有教程或其他东西可以让我轻松愉快地完成整个过程?

感谢所有帮助或指针。

如前所述,我正在使用 unity3d、c# in mono 和 facebook graph api。

[编辑] 我希望它可以在 android 上运行。

【问题讨论】:

    标签: c# facebook facebook-graph-api unity3d


    【解决方案1】:

    使用C# Facebook library。有一个名为 facebook-aspnet-sample 的示例项目,它显示了身份验证和登录。另外,请查看tutorial page,它处理如何从 Unity3d 游戏连接到 Facebook。教程很短,但演示项目下载很有用。

    还有plugins for sale 允许从 Unity3d 访问 Facebook。

    【讨论】:

    【解决方案2】:

    在您准备好您的 FB 应用程序后,您确实需要获得一个令牌。但是,令牌总是在 USER 的上下文中请求 - 因此用户应该在网站上进行身份验证。这意味着应该显示 Facebook 登录对话框 - 这将询问用户他是否确实信任该应用程序。有不同的方法可以做到这一点 - 这是关于 FB 身份验证的通用页面:https://developers.facebook.com/docs/authentication/,这个解释了如何在 Android 中做到这一点:https://developers.facebook.com/docs/mobile/android/sso/

    如果你想使用 JavaScript 身份验证(我个人在 MVC3 项目中使用),这里有一个来自https://developers.facebook.com/docs/authentication/client-side/ 的稍微修改的示例,它可以做到这一点。请记住将应用 ID 和权限更改为您需要的。

    <div id="fb-root"></div>
    <script>
        // Load the SDK Asynchronously
        (function (d) {
            var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
            if (d.getElementById(id)) { return; }
            js = d.createElement('script'); js.id = id; js.async = true;
            js.src = "//connect.facebook.net/en_US/all.js";
            ref.parentNode.insertBefore(js, ref);
        } (document));
    
        // Init the SDK upon load
        window.fbAsyncInit = function () {
            FB.init({
                appId: '@EventController.FB_APP_ID', // App ID
                channelUrl: '//' + window.location.hostname + '/channel.htm', // Path to your Channel File
                status: false, // check login status
                cookie: false, // enable cookies to allow the server to access the session
                xfbml: false  // parse XFBML
            });
    
            // listen for and handle auth.statusChange events
            FB.Event.subscribe('auth.statusChange', function (response) {
                if (response.authResponse) {
                    // user has auth'd your app and is logged into Facebook
                    FB.api('/me', function (me) {
                        // get info about the user, for example
                    })
                    //document.getElementById('auth-loggedout').style.display = 'none';
                } else {
                    // user has not auth'd your app, or is not logged into Facebook
                    //document.getElementById('auth-loggedout').style.display = 'block';
                }
            });
    
            // respond to clicks on the login and logout links
            document.getElementById('auth-loginlink').addEventListener('click', function () {
                FB.login(function (response) {
                    // handle the response
                    if (response.authResponse != null) {
                        // HERE IS THE TOKEN YOU CAN USE
                        var token = response.authResponse.accessToken;
                    } else {
    
                    }
                    // AND THESE ARE THE PERMISSIONS YOU WANT YOUR APP TO REQUEST
                }, { scope: 'manage_pages,publish_stream' });
            });
        };
    </script>
    

    这里有个问题 - 你的 FB 应用应该在应用 -> 设置 -> 网站 URL 字段中有你的网站 URL(即使它是 http://localhost/)。此外,您应该将 channel.htm 文件放入您网站的根目录,其中包含一行代码:

    <script src="//connect.facebook.net/en_US/all.js">
    

    【讨论】:

    • 这不是我真正想要的,因为它使用网络代码。我想我已经通过提到 asp.net 帖子的链接把你赶走了。我没有在 web 环境中使用代码,而是在 c# Unity 环境中使用代码。
    • 除非您硬编码用户的访问令牌,否则您无法在不与用户交互的情况下从服务器端代码获取它。在您的应用程序可以代表用户执行任何操作之前,应始终向用户显示 FB 对话框。如果你的目标是 android,FB 有 Android SDK:developers.facebook.com/docs/reference/androidsdk
    • 谢谢,我已经将 facebook android sdk 插入 eclipse,导出到 jar,并使用 IKVM 创建了一个 dll(谷歌搜索如何做到这一点)我可以一起使用c# 一切似乎在 IDE 中运行良好。但是在编译到设备时出现以下错误:“堆部分太多”
    • 很遗憾,我无法帮助您解决这个问题。
    • 可能是 Mono 的垃圾收集器的问题:answers.unity3d.com/questions/236499/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 2018-04-27
    • 2018-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多