私のC#Facebookキャンバスアプリケーションを取得して、ユーザーが自分のアプリケーションを承認しているかどうかを判断するのに問題があります。FacebookWebContext.Current.IsAuthorizedはあるページでは動作しますが、別のページでは動作しません
問題は実際にはセカンダリページでのみ発生しています。私のアプリは最初にランディングページをチェックし、ユーザーがアプリケーションを検証したことを適切に判断します。アプリの
ショート概要:
- ユーザーはアプリが好き。
- ユーザーがアプリを承認します。
- ユーザーは友だちに情報を送信します(Facebook通知を介して)
- ユーザーの訪問アプリと情報を取得します。
したがって、手順は1〜3です。ステップ4で私はいくつかの問題を抱えています。
「HasAuthorizedApplication」というメソッドを呼び出して、APIからデータを取得しようとする前にユーザーがアプリを承認していることを確認します。
public bool HasAuthorizedApplication()
{
bool returnValue = false;
try
{
if (FacebookWebContext.Current != null)
{
returnValue = FacebookWebContext.Current.IsAuthorized(Scope.Split(','));
if (returnValue)
{
AccessToken = FacebookWebContext.Current.AccessToken;
HttpContext.Current.Session["accesstoken"] = AccessToken;
}
else
{
HttpContext.Current.Session["accesstoken"] = null;
}
}
}
catch
{
returnValue = false;
}
return returnValue;
}
「スコープ」私が求めているだけの権限:ステップ4で「publish_stream、電子メール」だから
、「利用者の友人は」Facebookの通知をクリックすると着陸を打ちますアプリのページ。承認を確認し、友人が承認していない場合は、認証ダイアログが表示されます。
承認後、アプリはセカンダリページにリダイレクトされ、グラフの通知の詳細が表示される前に、友だちがアプリを承認したことを確認するために再度チェックします。
残念ながら、私がこの時間を呼び出すと、「FacebookWebContext.Current.IsAuthorized」は常に「false」を返します。私はこの時点で "AccessToken"と "SignedRequest"がnullであることに注意します。認証ダイアログにリダイレクトしようとしましたが、友だちが既に検証済みであるため、ユーザーには表示されません。しかし、二次ページに戻るたびに、 "IsAuthorized"コールはfalseを返します。
マイコールは、Facebookの通知を周囲のデータを取得するために(私はデータを取得しようとすると、さらにfalseを返す):「データID」は、通知のIDです
public dynamic GetData(string dataId)
{
if (HasAuthorizedApplication())
{
var fb = new FacebookWebClient(AccessToken);
dynamic data = fb.Get(dataId);
return data;
}
return null;
}
。
確かに、私はJavascriptとバックエンドの間のやりとりがどのように作用するかはよく分かりません。
<script type="text/javascript">
FB.init({
appId: '<%=APPID %>',
status: true, // check login status
cookie: true, // enable cookies to allow the server to access the session
oauth: true,
xfbml: true // parse XFBML
});
</script>
そして、それは1つのページに正しく動作する理由のアイデアではなく、別の:私は、さらに着陸し、両方の二次ページで、次のJavascriptを持っていますか?
ありがとうございます! Craig
ありがとうございました! (遅く返事を申し訳ありません)私は実際に以前の開発者によって既に作成されたものを廃棄し、Javascript SDKのみを使用しました。はるかに良い結果。 –