我们没有为新用户生成Facebook应用访问令牌。 [英] Facebook app access token us not getting generated for a new user.

查看:54
本文介绍了我们没有为新用户生成Facebook应用访问令牌。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨专家,



我正在使用C#SDK编写我的第一个Facebook应用程序。



I从Javascript获取所需的访问令牌,然后使用C#服务器端代码获取Facebook数据。



以上代码对于facebook应用程序的管理员(用户)工作得非常好谁创建了FB应用程序),但是任何其他用户都没有使用相同的代码获取访问令牌。



我希望我的问题很明确。



获取访问令牌的JS代码应适用于任何用户。

任何类型的帮助都是合适的。



提前多多谢谢。



~Amol Borkar

解决方案

YES Ankit ...

你是对的。

实际上,为了从FB读取任何用户的数据,您应该拥有适当的权限,并且该用户应该允许您这样做。然后只会向您发出一个用户访问令牌。



以下是经过测试的相同工作代码。



 <   body  >  
< div id = wrappertop runat = server class = wrapper-top >
< / div >
< div id = likegate_overlaycontents runat = server class = overlay-contents >
< div id = like-messaging >
< img class = head src = images / h1_likegate.png alt = < span class =code-attribute> / > < br / >
< img class = 小标题 src = images / subhead_likegate.png alt = / > < br / >
< / div >
< / div >
< 表格 id = form1 runat = 服务器 >
< div id = fb-root < span class =code-keyword>>
< / div >
< div >
< asp:GridView AutoGenerateColumns = false AllowPaging = true PageSize = 10 ID = GridView1

runat = server OnPageIn dexChanging = GridView1_PageIndexChanging >
< >
< asp:BoundField DataField = id HeaderText = ID / < span class =code-keyword>>

< asp:BoundField DataField = 名称 HeaderText = 名称 / >
< /列 >
< / asp:GridView >
< / div >
< span class =code-keyword>< script type = text / javascript >
//异步加载SDK
(函数(d){
var js,id ='facebook-jssdk',ref = d.getElementsByTagName( '脚本')[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);
}(文件));

//加载时启动SDK
window.fbAsyncInit = function(){
FB.init({
appId:'144922775656553',// App ID
// channelUrl:'//'+ window.location.hostname +'/ channel',//频道文件的路径
状态:true,//检查登录状态
cookie: true,//启用cookie以允许服务器访问会话
xfbml:true //解析XFBML
});

//监听并处理auth.statusChange事件
FB.Event.subscribe('auth.statusChange',function(response){
if(response.authResponse){
//用户已为您的应用程序验证并登录Facebook
FB.api('/ me',function(me){
var accessToken = response.authResponse.accessToken;
// alert(accessToken);
document.getElementById(txtToken)。value = accessToken;
if(me.name){
document.getElementById('auth-displayname ').innerHTML = me.name;
}
})
document.getElementById('auth-loggedout')。style.display ='none';
document.getElementById ('auth-loggedin')。style.display ='block';
} else {
// us呃没有为您的应用程序验证,或者没有登录Facebook
document.getElementById('auth-loggedout')。style.display ='block';
document.getElementById('auth-loggedin')。style.display ='none';
}
});


(#auth-logoutlink)。click(function(){FB.logout(function(){window.location。 reload();});});
}
< / script >
< h1 >
Facebook登录验证
< / h1 >
< div id = auth-status >
< div id = auth-loggedout >
< div class = fb-login-button autologoutlink = true 范围 = email,user_checkins >
使用Facebook登录< / div >
< / div >
< div id = auth-loggedin style = display:none >
您好,< span id = auth-displayname > < / span > < a href = id = auth-logoutlink > logout < / a >
< / div >
< / div >
< asp:按钮 ID = btnMyDetails runat = 服务器 正文 = GetMyDetails OnClick = btnMyDetails_Click / >
< asp:按钮 ID = btnFriendDetails runat = server 文字 = GetFriendsDetails OnClick = btnFriendDetails_Click / >
< asp:TextBox ID = txtToken runat = server CssClass = BLOCK > < / asp:TextBox >
< / form >
< / body >


Hi experts,

I am writing my first Facebook application using C# SDK.

I am getting required access token from Javascript and then fetching facebook data from using C# server side code.

Above code is working perfectly fine for admin of the facebook application (the user who has created the FB application), but any other user is not getting access token using same code.

I hope my question is clear.

JS code to get access token should work for any user.
Any kind of help is appropriated.

Thanks a lot in advance.

~Amol Borkar

解决方案

YES Ankit...
You are correct.
Actually in order to read any user''s data from FB, you should have proper permissions and that user should allow you to do so. Then and then only a user access token will be issued to you.

Following is a tested working code for the same.

<body>
    <div id="wrappertop" runat="server" class="wrapper-top">
    </div>
    <div id="likegate_overlaycontents" runat="server" class="overlay-contents">
        <div id="like-messaging">
            <img class="head" src="images/h1_likegate.png" alt="" /><br />
            <img class="subhead" src="images/subhead_likegate.png" alt="" /><br />
        </div>
    </div>
    <form id="form1" runat="server">
    <div id="fb-root">
    </div>
    <div>
        <asp:GridView AutoGenerateColumns="false" AllowPaging="true" PageSize="10" ID="GridView1"

            runat="server" OnPageIn dexChanging="GridView1_PageIndexChanging">
            <Columns>
                <asp:BoundField DataField="id" HeaderText="ID" />
                <asp:BoundField DataField="name" HeaderText="NAME" />
            </Columns>
        </asp:GridView>
    </div>
    <script type="text/javascript">
        // 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: '144922775656553', // App ID
                //channelUrl: '//' + window.location.hostname + '/channel', // Path to your Channel File
                status: true, // check login status
                cookie: true, // enable cookies to allow the server to access the session
                xfbml: true  // 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) {
                        var accessToken = response.authResponse.accessToken;
                        //alert(accessToken);
                        document.getElementById("txtToken").value = accessToken;
                        if (me.name) {
                            document.getElementById('auth-displayname').innerHTML = me.name;
                        }
                    })
                    document.getElementById('auth-loggedout').style.display = 'none';
                    document.getElementById('auth-loggedin').style.display = 'block';
                } else {
                    // user has not auth'd your app, or is not logged into Facebook
                    document.getElementById('auth-loggedout').style.display = 'block';
                    document.getElementById('auth-loggedin').style.display = 'none';
                }
            });


("#auth-logoutlink").click(function () { FB.logout(function () { window.location.reload(); }); }); } </script> <h1> Facebook Login Authentication </h1> <div id="auth-status"> <div id="auth-loggedout"> <div class="fb-login-button" autologoutlink="true" scope="email,user_checkins"> Login with Facebook</div> </div> <div id="auth-loggedin" style="display: none"> Hi, <span id="auth-displayname"></span>(<a href="#" id="auth-logoutlink">logout</a>) </div> </div> <asp:Button ID="btnMyDetails" runat="server" Text="GetMyDetails" OnClick="btnMyDetails_Click" /> <asp:Button ID="btnFriendDetails" runat="server" Text="GetFriendsDetails" OnClick="btnFriendDetails_Click" /> <asp:TextBox ID="txtToken" runat="server" CssClass="BLOCK"></asp:TextBox> </form> </body>


这篇关于我们没有为新用户生成Facebook应用访问令牌。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆