ホームページ  >  記事  >  バックエンド開発  >  Sina Weibo OAuth 認証と storage_PHP チュートリアルの主なプロセスの詳細な説明

Sina Weibo OAuth 認証と storage_PHP チュートリアルの主なプロセスの詳細な説明

WBOY
WBOYオリジナル
2016-07-13 09:59:50946ブラウズ

Sina Weibo OAuth認証と保存の主要なプロセスを詳しく説明

この記事では、Twitterの認証プロセスを参考に実装されたSina Weibo OAuthの認証と保存の主要なプロセスを詳しく説明します

OAuthに関する記事はインターネット上に多数ありますが、検証プロセスや検証後のデータの保存など、sina本体も含めた詳細な紹介がなかったので、Twitterの認証プロセスを参考に詳細なコメントコードをいくつか書きました。

始める前に、まずユーザー情報を保存するデータベースを作成します。これは基本的な MySQL の例です。

?

1

2

3

4

5

6

7

8

9

テーブル `oauth_users` を作成します (

`id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,

`oauth_provider` VARCHAR(10),

`oauth_uid` テキスト、

`oauth_token` テキスト、

`oauth_secret` テキスト、

「ユーザー名」テキスト、

主キー (`id`)

) ENGINE=MyISAM デフォルト CHARSET=utf8;

oauth_token と oauth_secret の 2 つのフィールドに注意してください。 Sina の OAuth 認証では、認証を完了するために token と token_secret という 2 つのパラメーターが必要なので、それらを記録するために 2 つのフィールドを予約する必要があります。

次に、次のタスクを順番に完了する必要があります:

SinaAPI への認証アプリケーションを開始して登録/ログインします。ユーザーがすでにアカウントを持っている場合は、関連データをセッションに保存します

OAuth ベースの認証プロセスは、URL を生成することから始まります。ユーザーは認証を要求するためにこの URL にリダイレクトされ、認証に合格すると、ユーザーはアプリケーション サーバーにリダイレクトされ、2 つの認証されたパラメータが URL を通じて返されます。

index.phpを作成する

?

次に、このファイルで次の 3 つのことを完了する必要があります:

URL のデータを確認する
セッション内のトークンデータを検証します
セッション内のシークレットデータを検証します

すべてのデータベースが正当である場合、新しい SinaOAuth オブジェクト インスタンスを作成する必要があります。これまでとの違いは、取得したトークン データをパラメーターとしてオブジェクトに渡す必要があることです。その後、アクセス トークンを取得できるようになります。取得したデータは、保存する必要がある唯一のデータです。

callback.phpを作成する

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

session_start();

//if( isset($_SESSION['last_key']) )

header("場所: weibolist.php");

include_once( 'config.php' );

include_once( 'weibooauth.php' );

//sinaOAuthオブジェクトインスタンスを作成します

$sinaOAuth = 新しいWeiboOAuth( WB_AKEY , WB_SKEY );

$keys = $sinaOAuth->getRequestToken();

// 認証トークンをリクエストします。パラメータはリダイレクト先の URL です

$aurl = $sinaOAuth->getAuthorizeURL( $keys['oauth_token'] ,false , 'http://t.yourtion.com/sina/callback.php');

//セッションに保存

$_SESSION['keys'] = $keys;

?>

Oauth を使用してログイン

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

session_start();

include_once ('config.php');

include_once ('weibooauth.php');

if (!empty($_GET['oauth_verifier']) && !empty($_SESSION['keys']['oauth_token']) &&

!empty($_SESSION['keys']['oauth_token']))

{

// SinaOAuth オブジェクト インスタンス、新しく追加された 2 つのパラメータに注意してください

$sinaOAuth = 新しい WeiboOAuth(WB_AKEY, WB_SKEY, $_SESSION['keys']['oauth_token'],

$_SESSION['keys']['oauth_token_secret']);

// アクセストークンを取得します

$access_token = $sinaOAuth->getAccessToken($_REQUEST['oauth_verifier']);

// 取得したアクセストークンをセッションに保存します

$_SESSION['access_token'] = $access_token;

// ユーザー情報を取得します

$user_info = $sinaOAuth->get('account/verify_credentials');

//ユーザー情報を印刷します

mysql_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PSSWORD);

mysql_select_db(DATABASE_DB_NAME);

//config.php のデータベース接続に置き換えます

if (isset($user_info->error) または empty($user_info['id']))

{

// 何か問題があるので、最初に戻ってください

header('場所:index.php');

}その他

{

// ID でユーザーを見つけてみましょう

$sql = "SELECT * FROM oauth_users WHERE oauth_provider='sina' AND oauth_uid= .$user_info['id'];

$query = mysql_query($sql);

$result = mysql_fetch_array($query);

// そうでない場合は、データベースに追加しましょう

if (空($result))

{

$sql = "oauth_users (oauth_provider、oauth_uid、ユーザー名、oauth_token、oauth_secret) VALUES ('sina', '" .

) に挿入します。

$user_info['id'] . "', '" . $user_info['screen_name'] . $access_token['oauth_token'] .

"', '" . $access_token['oauth_token_secret'] "')";

$query = mysql_query($sql);

$query = mysql_query("SELECT * FROM oauth_users WHERE id = ".mysql_insert_id());

$result = mysql_fetch_array($query);

}その他

{

//トークンを更新します

$query = mysql_query("UPDATE oauth_users SET oauth_token = '" . $access_token['oauth_token'] .

"', oauth_secret = '" . $access_token['oauth_token_secret'] .

"' WHERE oauth_provider = 'sina' AND oauth_uid = " . $user_info['id']);

}

$_SESSION['id']=$result['id'];

$_SESSION['ユーザー名']=$result['ユーザー名'];

$_SESSION['oauth_uid']=$result['oauth_uid'];

$_SESSION['oauth_provider']=$result['oauth_provider'];

$_SESSION['oauth_token']=$result['oauth_token'];

$_SESSION['oauth_secret']=$result['oauth_secret'];

header('場所: update.php');

}

}その他

{

//データが不完全です。前のステップに進んでください

header('場所:index.php');

}

?>

$user_info->id を通じてユーザー ID を取得でき、$user_info->screen_name を通じてユーザー名を取得できます。他の情報も同様の方法で取得できます。

oauth_verifier によって返されたパラメーターは再利用できないことを指摘することが重要です。上記のコードがユーザー情報を正しく出力した場合、ページを更新してみると、oauth_verifier が原因でページがエラー メッセージをスローすることがわかります。すでに一度使用しています。再度使用するには、index.php ページに移動して認証リクエストを再度開始する必要があります。

ユーザー登録

ユーザー情報を取得したら、ユーザー情報を独自のデータベースに登録する必要があります。もちろん、ユーザーがローカル データベースに登録されていないことが前提です。

上記のコード内のデータベースリンク情報は独自のものに変更する必要があります。ユーザーがデータベースにすでに存在する場合は、ユーザーのトークン フィールドを更新する必要があります。これは、Twitter が新しいトークンを生成し、データベース内のトークンの有効期限が切れたことを意味するためです。ユーザーが存在しない場合は、新しいレコードを追加し、関連データをセッションに保存し、最後に update.php ページにリダイレクトする必要があります。

update.php コードは次のとおりです:

上記のコード内の SQL は検証されていないため、実際に使用する場合は変更が必要になる可能性があることに注意してください。データベースに接続する前に、ユーザーがログインしているかどうかを確認する必要があります。ユーザー名を使用すると、パーソナライズされたウェルカム メッセージを表示できます:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

include_once ('config.php');

include_once ('weibooauth.php');

session_start();

if(!empty($_SESSION['ユーザー名'])){

// ユーザーはログインしています、リダイレクトします

header('index.php');

}

?>

OAuth 経由で認証 -- Yourtion

こんにちは

これは OAuth 認証と保存の主なプロセスです。お役に立てば幸いです。 コードのダウンロード: SinaOauth

この記事で説明した内容は以上です。皆さんに気に入っていただければ幸いです。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/975131.html技術記事 Sina Weibo OAuth の認証と保存の主要なプロセスの詳細な説明 この記事では、Twitter の認証プロセスを参考にして実装された Sina Weibo OAuth の主要なプロセスの詳細な説明を紹介します。 .
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
前の記事:php を使用して HTML 出力を JavaScript_PHP にエスケープするチュートリアル次の記事:php を使用して HTML 出力を JavaScript_PHP にエスケープするチュートリアル

関連記事

続きを見る