0

私はphpで音楽ウェブサイトを持っています。Facebook 経由でユーザーを認証し、hybridauth ライブラリ経由で自分の Web サイトにログインすることができます。

今私が欲しいのは、ユーザーが曲を聴くたびに、曲のリンクでステータスを更新することです。Facebook がオフライン アクセスのサポートを削除している今、これを達成できますか、それともオフライン アクセス許可を必要としないものですか?

私はFacebook APIが初めてです。

4

1 に答える 1

1

まあ、私はあなたのシナリオを完全には理解していませんが、ユーザーが自分のウォールに公開したいときにアプリを使用している場合、何の問題もなく、「offline_access」または同等のものは必要ありません..

javascript SDKをページにロードするだけで、ユーザーが認証され、有効なアクセス トークンを持っていることが確認されます。

Javascript SDK で認証を実装するデスクトップ Web およびモバイル Web アプリ

FB.getLoginStatus() を呼び出すか、FB.init() を呼び出したときに status: true が設定されていることを確認することは、次回ユーザーがアプリケーションにアクセスして Facebook にサインインしたときに、これらの呼び出しの結果として渡される authResponse オブジェクトを意味します。新しい有効なアクセス トークンが含まれます。

この場合、ユーザーがアプリケーションを使用して暗黙的に新しいアクセス トークンを生成するという単純な行為です。


編集

で説明されているように、サーバー側の認証フローを使用するか、有効なアクセス トークン (クライアント側のフローを使用して取得された) を拡張するために提供される新しいエンドポイント facebook を使用する場合、かなり長い有効期間 (約 60 日) のアクセス トークンを取得できます。 post offline_access パーミッションの削除

それで問題が解決する場合は問題ありませんが、その状況を完全に回避するためにできることは何もないため、アプリケーションがトークンの有効期限を処理できることを確認することをお勧めします。

どのように?いくつかのオプションがあり、特定のシナリオに合ったものを見つける必要がありますが、ここにオプションがあります。まず第一に、私が見ているように、トークンがユーザーが曲を聴いているときに有効期限が切れ、サーバー側から新しいトークンを取得するには、ページを更新してユーザーを認証ダイアログに送信する必要があります。これにより、ユーザーのエクスペリエンスが妨げられます。

これは js SDK を使用する js コードです。これは完全なコードではありません。動作するとは思いませんが、何ができるかについてのアイデアが得られるはずです。

FB.Event.subscribe("auth.statusChange", function(response) {
    if (response.status !== "connected") {
        FB.login(function(response2) {
            if (response2.authResponse) {
                // you now have a valid access token, you can update your server side with an ajax request for example
            }
            else {
                // user canceled login
            }
        });
    }
});

また、FB.loginはポップアップを開こうとするため、このように呼び出すべきではなく、ユーザー インタラクションの後にのみ呼び出す必要があることに注意してください。したがって、単に呼び出す代わりに、ユーザーに「お願いします」のようなメッセージを表示するように置き換える必要があります。 facebook に投稿できるようにするには、[OK] をクリックしてください...」というメッセージが表示され、そのクリックでFB.loginが開きます。

もちろん、使用できる他の方法や、サブスクライブできる他のイベントがあります。ドキュメントを読んで、使用できるオプションを試してみてください。

于 2012-04-15T11:50:09.793 に答える