サーバー側のフローを使用してユーザーを認証し、アクセストークンを取得している場合、JavaScript SDKでそのアクセストークンを設定し、それを使用してクライアント側から呼び出しを行うにはどうすればよいですか?
1 に答える
ユーザーがサーバー側の認証フローを完了すると、ユーザーは既にアプリに対して承認されているため、FB.getLoginStatusメソッドを使用するだけです。
FB.getLoginStatus(function(response) {
if (response.status === "connected") {
console.log("authResponse: ", response.authResponse);
FB.api("me", function(response2) {
console.log("Hey there " + response2.name);
});
}
else if (response.status === "not_authorized") {
// user is logged in to facebook but hasn't authorized your app, should not happen if he went through the server side authentication
}
else {
// user is logged out of facebook, also should not happen
}
}
ご覧のとおり、js sdk を使用してグラフをクエリするだけです。手動でトークンを取得する必要はありませんが、トークンが必要な場合authResponse
は、次の形式にする必要があります。
authResponse: {
accessToken: "aaaaaaa",
expiresIn: "bbbbbb",
signedRequest: "cccccc",
userID: "dddddd"
}
編集
ユーザーが Facebook にログインしていて、アプリを許可して操作しgetLoginStatus
た場合は、有効なアクセス トークンが返されます。
そうでない場合がいくつかありますが、そのうちの 1 つはトークンの有効期限が切れている場合です。
無効および期限切れのアクセストークンの処理に記載されているように:
Javascript SDK で認証を実装するデスクトップ Web およびモバイル Web アプリ
FB.getLoginStatus() を呼び出すか、FB.init() を呼び出すときに status: true が設定されていることを確認することは、次回ユーザーがアプリケーションにアクセスして Facebook にサインインしたときに、これらの呼び出しの結果として渡される authResponse オブジェクトを意味します。新しい有効なアクセス トークンが含まれます。
この場合、ユーザーがアプリケーションを使用して新しいアクセス トークンを暗黙的に生成するという単純な行為です。