私はWindows Phoneにアプリケーションを持っていて、Facebookに登録しています。いくつかのデータをテーブルに保存していますが、1人のユーザーがテーブルに複数回保存されています。そのfb-idを持つレコードがあるかどうかをテーブルでチェック(fb-idを取得)しようとしましたが、再登録する前に新しいユーザーが存在するかどうかを確認する必要がありますが、非同期メソッドなど、順序がなく、常に最初にクエリの挿入、これを解決できますか?
クライアント側 (限定)
await App.MobileService.LoginAsync(MobileServiceAuthenticationProvider.Facebook);
Message = string.Format("User Authenticate - {0}", App.MobileService.CurrentUser.UserId);
//***** Get fb info
var userId = App.MobileService.CurrentUser.UserId;
var facebookId = userId.Substring(userId.IndexOf(':') + 1);
var client = new HttpClient();
var fbUser = await client.GetAsync("https://graph.facebook.com/" + facebookId);
var response = await fbUser.Content.ReadAsStringAsync();
var jo = JObject.Parse(response);
var FbidUser = jo.GetValue("id");
var userName = jo.GetValue("name");
var genero = jo.GetValue("gender");
でも、サーバークライアントでやればいいのですが、情報データを一度挿入する方法、つまり、挿入する前にテーブルのレコードを確認してください。サーバー側 Azure:
function insert(item, user, request)
{
item.UserName = "<unknown>"; // default
var identities = user.getIdentities();
var req = require('request');
if (identities.facebook)
{
var fbAccessToken = identities.facebook.accessToken;
var url = 'https://graph.facebook.com/me?access_token=' + fbAccessToken;
req(url, function (err, resp, body)
{
if (err || resp.statusCode !== 200)
{
console.error('Error sending data to FB Graph API: ', err);
request.respond(statusCodes.INTERNAL_SERVER_ERROR, body);
}
else
{
try
{
var userData = JSON.parse(body);
item.UserName = userData.name;
request.execute();
} catch (ex)
{
console.error('Error parsing response from FB Graph API: ', ex);
request.respond(statusCodes.INTERNAL_SERVER_ERROR, ex);
}
}
});
}
}
上記のコードによると、2 番目の質問があります。Facebook の開発者センターで、メールと写真 (アプリケーション) にアクセスできます。userData変数にこの情報が含まれていると思いますか?、どうすればアクセスできますか?、呼び出し方残りの情報はどこにあるのですか?