Yahoo 認証で得たプロフィール情報がよくわかりません。具体的には「emails」プロパティからメールアドレスを取得したい。
「メール」プロパティは配列です。配列を反復処理したり、他の配列と同じように解析しようとすると、問題が発生します。
Catchable fatal error: Object of class stdClass could not be converted to string in /home/content/54/7550554/html/talqo/youath2callback.php on line 33
エラーが発生する行までの私のoauthコールバックページのコードは次のとおりです。
require("lib/Yahoo.inc");
// Your Consumer Key (API Key) goes here.
define('CONSUMER_KEY', "$consumer_key");
// Your Consumer Secret goes here.
define('CONSUMER_SECRET', "$consumer_secret");
// Your application ID goes here.
define('APPID', "$appId");
$session = YahooSession::requireSession(CONSUMER_KEY,CONSUMER_SECRET,APPID);
// Fetch the logged-in (sessioned) user
$user = $session->getSessionedUser();
// Fetch the profile for the current user.
$profile = $user->getProfile();
foreach($profile as $k => $v ){
echo "$k = $v <br>";
}
foreach グループの出力は、エラーをスローしている値に到達するまで意味があります。
uri = http://social.yahooapis.com/v1/user/IRSAJKSJHGAH3OMPDQSQ7RIWV4/profile
guid = IRSAJKSJHGAH3OMPDQSQ7RIWV4
birthdate = 5/13
created = 2012-09-11T13:47:38Z
emails = Array
familyName = Last NameLewis
gender = M
givenName = Gregory
Catchable fatal error: Object of class stdClass could not be converted to string in /home/content/54/7550554/html/talqo/youath2callback.php on line 33
私var_dump( $profile );
がパッケージ全体を取得した場合。あなたがそれを見たいかどうかはわかりませんし、それがこの質問にとって重要かどうかもわかりません。["image"] で foreach ループがハングしているようです。
object(stdClass)#9 (17) { ["uri"]=> string(70) "http://social.yahooapis.com/v1/user/IRSAJKSJHGAH3OMPDQSQ7RIWV4/profile" ["guid"]=> string(26) "IRSAJKSJHGAH3OMPDQSQ7RIWV4" ["birthdate"]=> string(4) "5/30" ["created"]=> string(20) "2012-09-11T13:47:38Z" ["emails"]=> array(2) { [0]=> object(stdClass)#11 (3) { ["handle"]=> string(27) "primaremail@mydomain.com" ["id"]=> int(1) ["type"]=> string(4) "HOME" } [1]=> object(stdClass)#12 (4) { ["handle"]=> string(20) "secondemail@yahoo.com" ["id"]=> int(2) ["primary"]=> bool(true) ["type"]=> string(4) "HOME" } } ["familyName"]=> string(14) "Last NameLewis" ["gender"]=> string(1) "M" ["givenName"]=> string(7) "Gregory" ["image"]=> object(stdClass)#13 (4) { ["height"]=> int(192) ["imageUrl"]=> string(55) "http://l.yimg.com/dh/ap/social/profile/profile_b192.png" ["size"]=> string(7) "192x192" ["width"]=> int(192) } ["lang"]=> string(5) "en-US" ["memberSince"]=> string(20) "2012-09-11T13:19:09Z" ["nickname"]=> string(7) "Gregory" ["phones"]=> array(1) { [0]=> object(stdClass)#14 (3) { ["id"]=> int(5) ["number"]=> string(12) "1-1234567890" ["type"]=> string(6) "MOBILE" } } ["profileUrl"]=> string(51) "http://profile.yahoo.com/IRSAJKSJHGAH3OMPDQSQ7RIWV4" ["timeZone"]=> string(19) "America/Los_Angeles" ["updated"]=> string(20) "2013-06-13T14:59:34Z" ["isConnected"]=> bool(false) }
したがって、この配列を解析する方法がうまくいかないと思います。
次のようにメールをエコーしようとすると、Arrayecho $profile->emails;
という単語が出力されるだけです。
配列をループしようとすると、次のようになります。
foreach($profile->emails as $k){
echo "$k <br>";
}
エラーが発生します:
Catchable fatal error: Object of class stdClass could not be converted to string in /home/content/54/7550554/html/talqo/youath2callback.php on line 34
では、Yahoo の結果に含まれるすべての変数、オブジェクト、プロパティなどを PHP 変数に適切に変換するにはどうすればよいでしょうか。