Bạn sẽ muốn làm hai việc. Trước tiên, để yêu cầu offline_access, bạn cần phải thay đổi chức năng đăng nhập Javascript để yêu cầu truy cập ngoại tuyến như sau. Đây là trong Views/Home/Index.aspx.
<div id="fb-root"></div>
<script src="http://connect.facebook.net/en_US/all.js"></script>
<script>
FB.init({ appId: '<%:FacebookSettings.Current.AppId %>', status: true, cookie: true, xfbml: true });
$('#fbLogin').click(function() {
FB.login(function (response) {
if (response.session) {
window.location = '<%:Url.Action("Profile") %>'
} else {
// user cancelled login
}
}, { perms: 'offline_access' });
});
</script>
</asp:Content>
Tiếp theo, để có mã thông báo truy cập, bạn chỉ cần làm như sau trong hành động sau khi người dùng được xác thực:
public ActionResult Profile()
{
var app = new FacebookApp();
if (app.Session == null)
{
// The user isnt logged in to Facebook
// send them to the home page
return RedirectToAction("Index");
}
// Read current access token:
var accessToken = app.Session.AccessToken;
// Get the user info from the Graph API
dynamic me = app.Api("/me");
ViewData["FirstName"] = me.first_name;
ViewData["LastName"] = me.last_name;
return View();
}
Nguồn
2010-11-19 22:50:08
Bạn có được điều này được giải quyết? Tôi đã thêm javascript FB.getLoginStatus mà kết quả là người dùng đã đăng nhập. Nhưng trong C# sử dụng sdk app.Session luôn là null. – Danny
Tôi đã giải quyết vấn đề này, vui lòng xem lời khuyên của Nathan. Có thể một số vấn đề với ID ứng dụng của bạn? –
Đừng quên đánh dấu câu hỏi là đã chấp nhận –