1

overtrue/wechatを使用してwechatプロジェクトを開発しています。

overtrue/wechat batchget APIで開発する場合、

マイコード:

$usersInfo = array();
$usersInfo = $userService->batchGet($usingOpenids);

エラーを返します:

User.php 行 103の ErrorException :

Illegal string offset 'user_info_list'.

いくつかの回答を確認したところ、下の写真のような不明な文字がいくつか見つかりました (崇高で開きます)。ただし、他の応答は正しいです。

ここに画像の説明を入力ここに画像の説明を入力


以下は wechat の batchGet API です。overtrue/wechat の batchget 関数は以下のことを目指しています。

HTTP POST: https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN

投稿データ:

{
    "user_list": [
        {
            "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", 
            "lang": "zh-CN"
        }, 
        {
            "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", 
            "lang": "zh-CN"
        }
    ]
}

応答データ:

{
   "user_info_list": [
       {
           "subscribe": 1, 
           "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", 
           "nickname": "iWithery", 
           "sex": 1, 
           "language": "zh_CN", 
           "city": "Jieyang", 
           "province": "Guangdong", 
           "country": "China", 
           "headimgurl": "http://wx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCunTPicGKezDC4saKISzRj3nz/0", 
           "subscribe_time": 1434093047, 
           "unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4", 
           "remark": "", 
           "groupid": 0
       }, 
       {
           "subscribe": 0, 
           "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", 
           "unionid": "oR5GjjjrbqBZbrnPwwmSxFukE41U", 
       }
   ]
}

では、このエラーを回避するにはどうすればよいでしょうか? おそらく問題はここHttp.php の 116 行目にあると思います。ここでフォーマットを転送できますか?しかし、方法がわかりません。

$contents = json_decode($response['data'], true);


PS: 一部のドキュメントが中国語であることについては申し訳ありません...

4

1 に答える 1

1

コメントによると、このエラーは、文字列を配列として使用していることを意味します。そこで、 User.phpでレスポンスをフォーマットするために json_decode を再度追加します。

    if(!is_array($response))
    {
        $response = json_decode($response, true);
    }

しかし、まだ私を混乱させるものがあります。Http.phpでは、すでに json_decode 関数を使用しているためです。ここで、 User.phpで json_decode を再び使用します。だから、もっと良い方法や他の問題があるかもしれません。ただし、これはそれを解決する1つの方法です。質問に答えてくれてありがとう〜

于 2016-01-10T02:17:34.640 に答える