0

https://github.com/php-loep/oauth2-clientを oauth 2.0 ライブラリとして使用しようとしています。

composer を使用してインストールする必要がある依存関係があります。

マニュアルに従おうとしましたが、すべて問題ないように見えましたが、動作させることができません!

composer をダウンロードして依存関係をインストールしたフォルダーに、リポジトリーのクローンを作成しました。これにより、固有の autoload ファイルが生成されました。

これで、この autoload ファイルを必要とするだけでよいことを理解できました。それが私がしたことですが、ロードする必要があるクラスのクラス名を解決できません。私の場合、これは\OAuth2\Client\Provider\Facebook

ライブラリの使用法は、https ://github.com/php-loep/oauth2-client/blob/master/README.md に記載されています。

あいまいな情報を提供しないようにするために、実行した手順を再現するこの短いシェル スクリプト (スクリプトは嘘をつきません!) を作成しました。空のフォルダーで実行し、作成したファイルfoo.phpをコマンド ラインまたは Web ブラウザーから実行すると、エラーが発生します。PHP Fatal error: Class 'OAuth2\Client\Provider\Facebook' not found in /var/www/test/foo.php on line 1

スクリプトはこちら...

git clone https://github.com/php-loep/oauth2-client.git
cd oauth2-client
curl -sS https://getcomposer.org/installer | php
php composer.phar install
cd ..
echo "<?php ini_set('display_errors',1); require_once 'oauth2-client/vendor/autoload.php'; \$provider = new \OAuth2\Client\Provider\Facebook(array()); " > foo.php

私は何を間違えましたか?作曲家の概念を誤解していませんか? もしそうなら、私を啓発してください!

また、ファイルfoo.phpをフォルダーに移動しようとしましたoauth2-clientが、何も変わりませんでした。

私はphp 5.3を実行していますが、__DIR__定数も利用できます。

4

2 に答える 2

1

foo.php で、Facebook クラスに間違った名前空間が使用されています。この部分を見逃しました: \League

oauth2-client/src/League/OAuth2/Client/Provider/Facebook.php:

namespace League\OAuth2\Client\Provider;

class Facebook extends IdentityProvider
{
于 2013-06-19T17:50:07.770 に答える
1

名前空間に関係しているようです。PHP 5.2 を実行している場合、PHP 5.3 より前の名前空間はサポートされていないため、問題が発生します:(

とにかく、問題を修正するには、いくつかの composers ファイルに移動して、いくつか変更する必要があります。頭のてっぺんから autoload_real.php を編集して、クラスローダーを含め、DIRを dirname( FILE ) に置き換える必要がありました。これが最善の方法かどうかはわかりませんが、これを行うことで機能しました。

于 2013-06-19T16:55:46.707 に答える