私は、Phil SturgeonによるFuelのNinjAuthに基づいたlaravelのoneAuthバンドルを使用しており、ユーザーの電子メールアドレスを取得しようとしています。
リクエストに適切なスコープを追加しました。LinkedInの認証画面で、基本的なプロファイルとメールアドレスのユーザー権限を正常に要求しています。これまでのところ、とても良いです。
考えられる問題は次のとおりです。電子メールフィールドの適切な名前は何ですか?email-address
、、 'メールアドレス`への参照を見つけましたemailAddress
...
ドキュメントには示さemail-address
れていますが、私には機能しません:)
これは/bundles/oneauth/libraries/oauth/provider/linkedin.phpからの問題のあるスニペットです
// Create a response from the request
return array(
'uid' => array_get($user, 'id'),
// 'email' => array_get($user, 'email-address)',
// 'email' => array_get($user, 'emailAddress)',
'name' => array_get($user, 'firstName').' '.array_get($user, 'lastName'),
'image' => array_get($user, 'pictureUrl'),
'nickname' => $nickname,
'description' => array_get($user, 'headline'),
'location' => array_get($user, 'location.name'),
'urls' => array(
'linkedin' => $linked_url,
),
);
メールフィールドのコメントを外すと、リクエストはなんとか失敗します(URLにはmysite.com/connect/callbackが表示されますが、ファビコンにはLinkedInが表示され、Chromeで空白のページが表示されます: " Error 324 (net::ERR_EMPTY_RESPONSE): The server closed the connection without sending any data.
")
上記のコードの電子メール行がコメントアウトされている場合、他のすべての詳細を正常に受信し、usersテーブルとテーブルoneauth_clientsに新しいレコードが追加されますが、電子メールは当然空白です。
シンプルなものが欠けているに違いない!
アップデート
リクエストURLはemail-addressで機能しますが、emailAddressを含むjsonオブジェクトを返します!!
上記の戻り配列コードにemailAddress
...が含まれている場合、スクリプトは引き続き停止します。
これが誰かのサクセスストーリーです:
「ライブラリとdemo.phpにそれぞれ次の2つの変更を加えました。
const _URL_REQUEST = 'https://api.linkedin.com/uas/oauth/requestToken?scope=r_basicprofile+r_emailaddress';
$response = $OBJ_linkedin->profile('~:(id,first-name,last-name,picture-url,email-address)');