1

StackExchange OAuth API を使用して、自分のサイトでユーザーを認証しようとしています。

ユーザーが初めてサインアップすると、すべてが正常に機能します。この時点で、DB に保存する「アクセス トークン」を取得します。

しかし、次にユーザーがサインインすると、アクセス トークンの値は実際には以前のものとは異なります。こんなはずじゃないの?

その場合、StackExchange を使用して既にサインアップしている既存のユーザーを確認するにはどうすればよいですか?

特定のサイト名 (「stackoverflow」など) を指定することで、ユーザーの情報を取得できます。しかし、その情報がなく、ユーザーが StackExchange 経由で既にサインインしていることを確認する必要がある場合はどうすればよいでしょうか?

accessToken を指定して取得できる「ユーザー」情報はありますか?

4

1 に答える 1

2

StackExchange OAuth 実装は、サード パーティ アプリケーションに対してユーザーを認証することを意図したものではなく、それらのサード パーティ アプリケーションが StackExchange API へのアクセスを取得することを承認することを目的としています。

取得するアクセス トークンは、現在ログインしているユーザーを表すトークンではなく、アプリケーションに付与されたユーザーに代わって API にアクセスするためのアクセス許可を表します。これは、http: //oauth.net/articles/authentication/で詳しく説明されている OAuth 2.0 の範囲に関する古典的な混乱です。

要約すると、OAuth または StackExchange アクセス トークンを使用してユーザーを認証することはできません。

StackExchange は、探している目的を容易にするために OpenID プロトコルをサポートしています。 https://openid.stackexchange.com/を参照してください。その欠点は、OpenID が非推奨のプロトコルであり、OpenID Connect に取って代わられていることです。OpenID Connect は、実際には OAuth 2.0 の上に構築された認証プロトコルですが、StackExchange ではまだサポートされていません。

于 2015-09-07T18:23:35.767 に答える