javascript SDKを使ってfacebookの登録プラグインを使おうとしています。私の知る限り、登録データを取得する手順は次のとおりです。
1) 登録ブロックを表示します (消費者が facebook にログインしている場合は事前に情報を入力します) 2) 消費者はすべての情報を入力し、登録をクリックします。3) facebook から暗号化された署名付きリクエストを取得します。4) signed_request をデコードして「コード」を取得します。5) このコードが正しいかどうかを確認します。6) このコードを使用して、アクセス トークンを取得します 7) アクセス トークンを使用して、名前、電子メール、性別などの消費者データを取得できます。
ステップ4までコードを機能させることができます。
a)その後、「コード」を確認する方法を知りたいb)今のところ、そのステップ5をスキップしました。「コード」を使用して「アクセストークン」を取得しようとすると、エラー191が発生します:リダイレクトURIが必要です絶対 URI である必要があります。
これが私のコードです。これを解決するために親切に案内してください:
<script>
window.fbAsyncInit = function() {
FB.init({
appId : 'xxx', // App ID
channelUrl : 'http:// localhost.qualityhealth.com/channel.html',
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true, // parse XFBML
oauth : true
});
// Additional initialization code such as adding Event Listeners goes here
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
var signedRequest = response.authResponse.signedRequest;
var verifier = parse_signed_request(signedRequest, 'CLIENT_SECRET');
var code = verifier.code;
FB.api('https://graph.facebook.com/oauth/access_token? client_id=CLIENT_ID&client_secret=CLIENT_SECRET&redirect_uri=http://localhost.qualityhealth.com&code=' + code, function(response1) {
console.log(response1);
});
}
});
};
// Load the SDK Asynchronously
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
function parse_signed_request(signed_request, secret) {
encoded_data = signed_request.split('.',2);
// decode the data
sig = encoded_data[0];
json = decode64(encoded_data[1]);
data = JSON.parse(json);
// check algorithm - not relevant to error
if (!data.algorithm || data.algorithm.toUpperCase() != 'HMAC-SHA256') {
console.error('Unknown algorithm. Expected HMAC-SHA256');
return null;
}
// check sig - not relevant to error
console.log(data);
return data;
}
function decode64(s) {
var e={},i,b=0,c,x,l=0,a,r='',w=String.fromCharCode,L=s.length;
var A="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for(i=0;i<64;i++){e[A.charAt(i)]=i;}
for(x=0;x<L;x++){
c=e[s.charAt(x)];b=(b<<6)+c;l+=6;
while(l>=8){((a=(b>>>(l-=8))&0xff)||(x<(L-2)))&&(r+=w(a));}
}
return r;
};
</script>
<div id="fb-root"></div>
<!--- Output Facebook Box--->
<fb:registration redirect-uri="http://localhost.qualityhealth.com"
fields='[
{"name":"name"},
{"name":"first_name"},
{"name":"email"},
{"name":"state", "description":"State", "type":"text"},
{"name":"gender"},
{"name":"phone", "description":"Phone Number", "type":"text"},
{"name":"birthday"}
]'
>
</fb:registration>
助けてくれてありがとう。