1

HWIOAuthBundle を使用して oauth2 サーバーを構成しようとしていますが、正しく構成への応答として HWIOAuthBundle が期待しているものについて明確にしたいと思いますinfos_urlか?

jsonファイルを期待していると思います。それで、そのフィールドは何ですか?リンクがあれば、私は幸せです。

hwi_oauth:
    firewall_name: main
    resource_owners:
        battlenet:
            type: oauth2
            client_id: "%client_id%"
            client_secret: "%client_secret%"
            access_token_url: %path%/oauth/token
            authorization_url:  %path%/oauth/authorize
            infos_url:  %path%/user/me
            scope: "read"
            user_response_class: HWI\Bundle\OAuthBundle\OAuth\Response\PathUserResponse
            paths:
                identifier: id
                nickname: id
                realname: id

ありがとう ;)

4

1 に答える 1

2

できる方法を見つけました!次のように、ユーザー用の単純な API を作成する必要があります。

ルーティング:

# app/routing.yml
api_users:
    pattern: /api/users.json
    defaults: { _controller: AppOAuthServerBundle:User:getUser }
    options:
        i18n: false

コントローラー:

<?php
namespace App\OAuthServerBundle\Controller;

use App\GeneralBundle\Entity\User;
use FOS\RestBundle\Controller\FOSRestController;

class UserController extends FOSRestController
{
    public function getUserAction()
    {
        $user = $this->get('security.context')->getToken()->getUser();

        if ( $user instanceof User ) {

            $data = array(
                'id' => $user->getId(),
                'username' => $user->getUsername(),
                'realname' => $user->getFirstname().' '.$user->getLastname(),
                'email'    => $user->getEmail(),

            );
        } else {
            $data = array();
        }


        $view = $this->view($data, 200)
            ->setTemplate('AppOAuthServerBundle:Default:index.html.twig')
            ->setFormat('json')
            ->setTemplateVar('user');

        return $this->handleView($view);
    }
}
于 2016-09-06T10:26:28.390 に答える