Xojo日本語ブログ

マルチプラットフォーム対応アプリが開発できるXojoのブログです。

XojoでFacebook認証を行うサンプルアプリを作りました

目指すところはOAuth2クラス(GitHubなど)なのですが、とりあえずFacebook認証に対応して、Graph APIを使えるようにしました。

XojoMania/FacebookOAuth: Facebook OAuth and get user information demo using Xojo.

使い方

クラス自体は次のように使います。

// プロバイダ(facebook、githubなど文字列で指定)
Dim provider as string = pmProvider.Text

// OAuth2のクライアントキー
Dim clientKey as String = txtClientKey.Text

// OAuth2のクライアントシークレット
Dim clientSecret as String = txtClientSecret.Text

// インスタンスを作成します。プロバイダは今のところ使えません。
App.oauth2 = new OAuth2(provider, clientKey, clientSecret)

// 認証するためのURLが返ってきます
Dim url as string =  App.oauth2.getOAuthUrl

// ブラウザで開きます
popupBrowser.htmlView.LoadURL url

// モーダルで表示します
popupBrowser.ShowModal

認証で取得できるURLはHTMLViewerで表示します。アクセストークンが取得されるので、外部ブラウザで開いてはいけません。

f:id:moongift:20160902230256p:plain

認証するとアクセストークンが取得できます。

dim myURL() as string = split(newTitle, "zurl")
if App.oauth2.isComplete(myURL(1)) then
  // アクセストークン
  mainWindow.lblAccessToken.Text = App.oauth2.accessToken
  mainWindow.btnGetUserName.Enabled = true
  MsgBox "Close this window"
  Self.btnClose.Enabled = true
end if

zurlというのはXojoでHTMLViewerを使っている時にURLを取得したいという場合に使う苦労の証なのですが、これは別な記事で紹介します。

f:id:moongift:20160902230313p:plain

アクセストークンが取得できたら、Graph APIがコールできます。今はユーザ情報が取得できます。

Dim userInfomation as JSONItem = App.oauth2.getUserInformation

txtName.Text = userInfomation.Value("name")

JSONItem型で返ってきますので、それをプログラムで利用できます。

f:id:moongift:20160902230322p:plain


今後の予定としてはGraph APIの他の機能にも対応し、他のプロバイダにも対応していく予定です。ピュアなXojoのコードで書いてあるので、プラットフォームを選ばず動作するはずです。ぜひお試しください。

XojoMania/FacebookOAuth: Facebook OAuth and get user information demo using Xojo.