3

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>

助けてくれてありがとう。

4

0 に答える 0