PopHub でログインできなくなった理由と対応方法

Software Configuration Management (SCM)

GitHub のアクティビティや通知を見るのに PopHub というアプリを使っていたのですけど、諸事情でいったんサインアウトした後、サインインし直してみてもサインインできない状況に見舞われました。

その原因と解消方法がわかったので記しておきます。


この頃 GitHub を使う機会が増えてきて GitHub のアクティビティや通知を知らせてくれる PopHub というアプリが活躍しだしたこの頃ですけど、ふとした理由で PopHub をサインアウトしてみたところ、それからサインインできなくなってしまいました。

どうやら GitHub での設定によっては、認証で受け取ったデータをうまく処理できなくなってしまっている様子です。そんな原因と対処方法がわかったので、メモしておこうと思います。

状況

まず、サインインしたいときには PopHub のアイコンをクリックして出てくるバルーンから Continueボタン を選んで認証を進めることになります。

このとき、ボタンを押して標準ブラウザが起動、そこで GitHub アカウントで認証して、アプリへコールバックする直前までは問題なく動作している様子でした。


ただ、後はコールバックして PopHub が使えるようになるはずが、いつまで経っても最初の Welcome to PopHub! 画面から先へ進んでくれません。

今までも、そう遠くない過去にサインインし直したことはあって問題なく認証できた気がするのですけど、今回はどうにも上手くいってくれない様子でした。

原因

何か原因のヒントを得られないかと、OS X に付属のコンソールアプリでログを眺めてみたところ、PopHub へコールバックが投げられたと思われるタイミングで、次のログがシステムログに記録されました。

PopHub[1124]: *** -[NSKeyedUnarchiver initForReadingWithData:]: data is NULL
PopHub[1124]: *** Caught exception setting key "hireable" : [<GHUser 0x6180003e2c00> setNilValueForKey]: could not set nil as the value for the key hireable.

なにやら、何かのデータを展開しようとしたときに空のデータが渡されて、それが原因で GHUser クラスか何かの "hireable" プロパティに nil を設定しようとしたためにエラーになっている様子です。

きっとこのエラーのために、認証処理が進まなくなってしまっているのでしょう。


これまでの様子から GitHub が返したレスポンスの可能性が高そうです。

認証で得られる情報といえば認証に成功したユーザーの情報くらいでしょうから、試しに自分のアカウントの情報を直接 https://api.github.com/users/EZ-NET で取得してみたところ、確かに hireable という項目が得られていて、その値が null になっていました。

状況と一致するので、おそらくこれで間違いなさそうです。

対処方法

これまで認証に成功していたのと、そもそもユーザー情報が原因であるなら、GitHub のサイトからユーザー情報を編集すれば、問題は解決しそうな気がします。

そう思って管理ページを眺めてみると、それらしい項目が見つかりました。

試しにここにチェックを入れると、先ほどの hireable の値が true になって、無事に PopHub の認証が成功するようになりました。

ここのチェックを再び外すと、サインインし直そうとしたときに、また値が null になって同じエラーに遭遇するので、原因はここで間違いなさそうです。