私はFBAPIの使用にまったく慣れておらず、Asp.netアプリケーションからFacebookウォールに投稿しようとしています。
FBからAppkeyと秘密鍵を取得し、コードに従ってFBウォールに投稿しようとしています。
リンク: http: //kennetham.com/2010/07/21/facebook-api-asp-net/
私が現在直面している問題は、ConnectAuthenticationクラスでは、HttpContext.Current.Request.Cookies[fullCookie]が常にNULLであるということです。そのため、ページロードで「if(ConnectAuthentication.isConnected())」を使用してFB接続を確認すると、常にfalseが返され、条件内でコードが実行されません。
何故ですか?私は何かが足りないのですか?
ConnectAuthenticationクラス
public class ConnectAuthentication
{
public ConnectAuthentication()
{
}
public static bool isConnected()
{
return (SessionKey != null && UserID != -1);
}
public static string ApiKey
{
get
{
return ConfigurationManager.AppSettings["APIKey"];
}
}
public static string SecretKey
{
get
{
return ConfigurationManager.AppSettings["Secret"];
}
}
public static string SessionKey
{
get
{
return GetFacebookCookie("session_key");
}
}
public static long UserID
{
get
{
long userID = -1;
long.TryParse(GetFacebookCookie("user"), out userID);
return userID;
}
}
private static string GetFacebookCookie(string cookieName)
{
string retString = null;
string fullCookie = ApiKey + "_" + cookieName;
if (HttpContext.Current.Request.Cookies[fullCookie] != null)
retString = HttpContext.Current.Request.Cookies[fullCookie].Value;
return retString;
}
}
これが私のページロードでConnectAuthenticationクラスがどのように使用されるかです:
if (ConnectAuthentication.isConnected())
{
Facebook.Session.ConnectSession session = new Facebook.Session.ConnectSession(ConnectAuthentication.ApiKey, ConnectAuthentication.SecretKey);
_connectSession = new ConnectSession(ConnectAuthentication.ApiKey, ConnectAuthentication.SecretKey);
Api _facebookAPI = new Api(_connectSession);
_connectSession.UserId = ConnectAuthentication.UserID;
Facebook.Rest.Api api = new Facebook.Rest.Api(_connectSession);
//Display user data captured from the Facebook API.
Facebook.Schema.user user = api.Users.GetInfo();
string fullName = user.first_name + " " + user.last_name;
Panel1.Visible = true;
Label1.Text = fullName;
}
else
{
//Facebook Connect not authenticated, proceed as usual.
}
}