【问题标题】:OAuth2 - Call to undefined method Authorizer::getResourceOwnerId()OAuth2 - 调用未定义的方法 Authorizer::getResourceOwnerId()
【发布时间】:2016-02-16 01:10:56
【问题描述】:

我在 Swift 上使用 Lumen Api & OAuth2-Server-Laravel repo 和 iOS 应用程序。

我访问了token 以返回有效的客户端和用户凭据,并将其存储在应用程序中。现在我正在尝试将tokenuser_id 交换。

我尝试了我在OAuth github repo's support 上为getting user_id from access_token 找到的内容

这是我得到的错误:

Fatal error: Call to undefined method LucaDegasperi\OAuth2Server\Facades\Authorizer::getResourceOwnerId() in /home/vagrant/LumenAPI/app/Http/Controllers/OAuthController.php on line 27

我尝试使用token 并收到user_id 作为回报。

我在 Lumen 中的路线如下所示:

$app->get('/me', 'OAuthController@token');

OAuthController:

namespace App\Http\Controllers;
use LucaDegasperi\OAuth2Server\Facades\Authorizer;

class OAuthController extends Controller
{

  private $authorizer;

  public function __construct(Authorizer $authorizer)
  {
      $this->authorizer = $authorizer;
  }

  public function token()
  {
    $user_id = $this->authorizer->getResourceOwnerId();
    return Response::json(['data'=> $user_id]);     //Line 27
  }
 }

我在 Swift 上使用了这个 GET 请求:

func me(handler: (data: NSDictionary?, error: String?) -> Void)
    {
        let url = NSURL(string: "/me", relativeToURL: self.baseUrl)
        let request = NSMutableURLRequest(URL: url!)
        request.HTTPMethod = "GET"

        // The request is valid only if the access_token exists
        if let t = self.getAccessToken()  // valid
        {
            request.setValue("Bearer \(t)", forHTTPHeaderField: "Authorization")
            let taskInstance = DataTaskHandler()
            taskInstance.make(request, handler: { (result, error) -> Void in
                if let res = result
                {
                    if let jsonDictionary = JSONParser(data: res).dictionary()
                    {
                            print(jsonDictionary)
                        handler(data: jsonDictionary, error: nil)
                    }
                }
            })
        }
        else
        {
            handler(data:nil, error: "The access token is not available")
        }
    } 

【问题讨论】:

    标签: php swift laravel oauth-2.0 lumen


    【解决方案1】:

    OAuthController 应该是

    class OAuthController extends Controller
    {
    
    public function __construct()
    {
        $this->middleware('oauth');
    }
    
    public function token(Request $request)
    {
        $user_id = Authorizer::getResourceOwnerId();
        return response()->json(['data'=> $user_id]);
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-06
      • 2020-07-11
      • 2012-07-27
      • 2019-10-25
      • 2018-07-11
      • 2013-10-23
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多