2

ASP.NET MVC 3WebアプリケーションをFacebookC#SDKで起動して実行しています。

ここでの指示に従うと、指示されたWeb構成セクションにAppId / Secretを入力すると、次のように使用時に設定が引き戻されたように見えますFacebookApplication.Current

var oAuthClient = new FacebookOAuthClient(FacebookApplication.Current) 
{
   RedirectUri = new Uri(RedirectUrl)
};

私のWebアプリケーションは「ホワイトラベル」であるため、2つのWebサイトと2つの別々のFacebookアプリケーションにサービスを提供します。

以前、Facebook Connectを実装したとき、「FacebookApplicationId」というグローバルプロパティがありました。このプロパティは、ドメインを調べて、使用するアプリIDを決定しました。

Facebook C#SDKを使用してこれを行うための適切な方法はありますか?

私はこれを行うことができます:

var oAuthClient = new FacebookOAuthClient(FacebookApplication.Current) 
{
     RedirectUri = new Uri(RedirectUrl),
     AppId = ManuallyGetTheRightAppIdBasedOnDomain(),
     AppSecret = ManuallyGetTheRightAppSecretBasedOnDomain()
};

しかし、私はそれを続けなければならないので、それは乾燥していないようです。

とプロパティがすでに設定されているFacebookApplication.Currentように、いくつかのスマートを入れる方法はありますか?AppIdAppSecret

ありとあらゆる提案を受け入れます。

4

1 に答える 1

1

私はそれを理解したと思います:のctorは.をFacebookOAuthClient取りますIFacebookApplication

そこでWhiteLabeledFacebookApplication、を実装する、という具体的な実装を作成しましたIFacebookApplication

WhiteLabeledFacebookApplicationのctorは列挙型を取得するため、ctorで渡された列挙型に基づいて、web.configWebsiteTypeのプロパティAppIdと関連する値をweb.configから読み取ります。AppSecret

だから、私のFacebookController、(私はすべてのFBのものを行う)で、私は:と呼ばれるプライベートプロパティを持っていますCurrentFacebookApplication

private IFacebookApplication _currentFacebookApplication;
private IFacebookApplication CurrentFacebookApplication
{
   get
   {
      if (_currentFacebookApplication == null)
      {
         var websiteType = SomeUnimportantCodeWhichWorksOutWebsiteFromUrl();
         _currentFacebookApplication = new WhiteLabeledFacebookApplication(websiteType );
      }

      return _currentFacebookApplication;
   }
}

だから私はこれを行うことができます:

var oAuthClient = new FacebookOAuthClient(CurrentFacebookApplication) 
{
   RedirectUri = new Uri(RedirectUrl)
};

そして、正しいAppId / Secretが引き戻されます-グルーヴィーです!

私がしたいのは依存性注入を使用することだけですが、コントローラーの構築中にはないHttpContextので、Webサイトの種類を理解できません。

それでも、うまく機能します-かなり乾燥しています。

インターフェイス駆動型プログラミングを使用するためのツールキットの開発者に敬意を表します。

于 2011-03-31T04:07:29.700 に答える