2012-03-07 11 views
0

私はFacebookの統合を持っているWebサイトを開発し始めました.Javascript SDKを使用している間は正常に動作しているようです。私はユーザーの名前とプロフィールの写真を表示しました。それから、JSを使って認証接続を行い、PHP SDKを使用してAPIを簡単に実行できるように、どこにでも読んでいます。どのFacebookログインボタンを使用しますか?その理由は何ですか?

私は2つの異なるログイン方法のいずれかを使用することに直面しましたが、私の人生のために、私はそれから欲しいものを得ることができません。ドキュメンテーションが明らかに何かの賛否両論を説明していないようで、どのような状況がどのようなアプローチに最も適しているかのようです。例えば

<?php if (!$user) { ?> 
    <div class="fb-login-button" data-perms="email,user_birthday">Login with Facebook</div> 
<?php } else { ?> 

    Your user profile is 
    <pre> 
    <?php //print htmlspecialchars(print_r($user_profile, true)) ?> 
    </pre> 

    <?php echo $user_profile['name']; ?> 

    <?php 
    $data = array("message" => "Hello Woghfd!"); 
    $status = $facebook->api("/me/feed", "POST", $data); 
    //echo $user; 

    ?> 
<?php } 

しかし、その後、他のボタンもあります:

<fb:login-button scope="email,user_about_me">Connect Facebooks</fb:login-button> 

そしてJS関数FB.loginの呼び出しが。

私はこのすべてを気にwouldntのが、私はこのコードをユーザーの壁に投稿するPHP SDKを使用する能力をテストしてい:

$status = $facebook->api("/me/feed", "POST", $data); 

をそして、私はエラーメッセージを取得しておく:

致命的にエラー:未知OAuthException:(#200)ユーザーがこのアクションを実行するアプリケーションを承認していない

これは私のウェブサイトにアクセスしたときです。その後、ログアウトして、自分のウェブサイトのログインボタンを使用してログインし直すと、それが動作します。私は明らかに、このサイトにアクセスするすべてのユーザーに対してこれが発生しないようにしています。

誰かがこれらのボタンの意味を説明できますか?私は説明のためにインターネットを精練するのに数日を費やしていますが、SDKのアップデートが考慮されると、何が最善のアプローチであるか分かりません。

ありがとうございました。

答えて

1

documentation州:あなたは、サーバー側からグラフAPIを使用したい場合は、からAPI呼び出しを作りたい場合は、その後、サーバー側のフローを使用します。それはかなり明確になり

Facebook Platform supports two different OAuth 2.0 flows for user login: server-side (known as the authentication code flow in the specification) and client-side (known as the implicit flow). The server-side flow is used whenever you need to call the Graph API from your web server. The client-side flow is used when you need to make calls to the Graph API from a client, such as JavaScript running in a Web browser or from a native mobile or desktop app.

クライアント側では、クライアント側のフローを使用します。 もちろん、認証のためにサーバー側のフローを使用して、js sdkなどを介してグラフAPIとやりとりすることもできますが、書いたとおりに行うのが理にかなっています。

ログインボタンの使用は、js sdkの助けを借りてクライアント側のフローを使用することを意味します。彼らはdocumentationに言うようにあなたが書いたボタンの 2つの異なる形態は、基本的に同じです。

Using the new JavaScript SDK, the plugin is available via the <fb:login-button> XFBML tag or the <div class="fb-login-button"> HTML tag. 

ユーザーのウォールに投稿しようとしますと、エラーメッセージについては、私は表示されませんあなたの例では、ユーザの壁に投稿するために必要なpublish_stream permissionをリクエストしています。

+0

ええ、それは意味がある、私はすべてを読んだことがある。私はpublish_streamパーミッションを要求してから、それを削除して何が起こるかを見ました。これまでアプリを使用していた人は壁に投稿してもらうことができますが、新しい人は私が述べたエラーを投げます。これは迷惑なことです。なぜなら、私が自分のFacebookアカウントで、ユーザーが最初にサイトにアクセスしたときに取得したビューを、まだ受け入れられていないアクセス許可なしでテストしたいからです。許可された全員のアクセス許可を削除することは可能ですか? – JamesG

+0

あなたがその許可を持っていて、それを承認した人は、まだそれを持っていて、彼らがそのアプリを削除するか、その許可を取り消すまでそれを持っていきます。新しいユーザーは、あなた自身が書いたように、この許可を得られません。そのため、アプリは壁に投稿できません。ユーザの壁に投稿する唯一の方法は、その許可を得ることです。プライバシー設定>アプリとウェブサイト(設定の編集)>使用しているアプリ(設定の編集)をアプリに許可する前に、そのアプリを承認する前に見た目をテストしたい場合は、 –

関連する問題