2016-04-23 2 views
0

私は、単一のユーザに対して複数のプロバイダを許可する簡単な認証システムを構築しています。私はomniauthdeviseを使用しています。特定のプロバイダと1人のユーザーがアプリケーションからリンクを解除する方法はありますか?アンリンクomniauthプロバイダ

プロバイダーのリンクを解除すると、oauthアプリケーションからユーザーを削除し、この特定のプロバイダー(Facebook、Twitter)に関するデータ(uidなど)をデータベースから削除することを意味します。つまり、ユーザーは、リンクを解除した後、Facebookなどを使用してサインインすることはできません。

私はすでにthisをチェックしており、あまり助けにはなりません。私はまた、deviseomniauthドキュメントをチェックアウトしました。これを達成するための方法はありません。 OAuthトークンのリンクを解除するには、各プロバイダに自分でリクエストする必要がありますか?

+0

「*プロバイダのリンクを解除する」とはどういう意味ですか? – Uzbekjon

+0

@Uzbekjon私は説明を更新しました。 –

+0

あなたは 'user.authentications.find_by(provider: 'facebook')。destroy'のようなOAuthの詳細を格納するために使用しているテーブルの行を削除するだけです。 Facebookには、アプリの権限を取り消すためのAPIエンドポイントもあります。 https://developers.facebook.com/docs/facebook-login/permissions/requesting-and-revoking – max

答えて

1

いいえ、OmniAuthとDeviseには、この「機能」が組み込まれていません。ユーザープロバイダを管理する別のコントローラとして実装する必要があります。

+0

そして、認証を取り消す各OAuthプロバイダに自分自身でAPI呼び出しを行う必要がありますか? –

+0

私は、プロバイダーでも認証を取り消したいと思う。あなたはそれを自分でする必要があります。しかし、それは簡単です。ほとんどのプロバイダが安心してoauthサービスを提供するので、通常は、DELETE HTTPリクエストを作成することです。ここには[FBの例](https://developers.facebook.com/docs/facebook-login/permissions/requesting-and-revoking#revokelogin)があります。 – Uzbekjon

+0

私はそれを得た。ありがとうございました。 –