0

StackExchangeのAPIに基づいてAndroidでハイブリッドアプリを作成しています。ログイン機能を提供する必要があります。JSSDKhttp ://api.stackexchange.com/docs/js-libで説明されている手順に従っています。SE.initを正常に実行できますが、SE.authenticateで「プロキシURLの予期しないドメイン」のようなエラーが発生します。これで、アプリのURLのドメインにlocalhost:8080が含まれます。これは、SE.initのchannelUrlプロパティで指定しました。Androidデバイスで実行しても、そのドメインはfile:/// data /data...のようなものです。では、どうすればこれを回避できますか?

このプロセス全体で、アプリでログインをクリックした後にブラウザを起動すると、google、facebookなどを介したログインなどのstackexchangeのさまざまなログインオプションが表示されます。しかし、上記の問題は、たとえばgoogleをクリックしてログインした後に発生します。 。そのため、リダイレクトを試み、SE.initのchannelUrlでローカルホストドメインを指定したことがわかります。

4

1 に答える 1

1

私も同様の問題を抱えていたので、あなたや同じ問題を扱っている他の誰かに役立つことを願って、私の発見を共有します。

まず、アプリに登録されているドメインは、channelUrlで提供するドメインと一致する必要があります。ここで注意すべき重要な点は、以下は同じドメインとは見なされないということです。

`example.domain.com` and `example.domain.com:8080`. 

多くのブラウザはこれをクロスドメインの投稿と見なすため、次のエラーが発生する可能性があります。

example.domain.comにメッセージを投稿できません。受信者の発信元はexample.domain.com:8080です。

これは、クロスサイトスクリプティング攻撃を防ぐためです。

何が私のために働いたのですか?:ローカルホストのものの特異性に対処することは本当に大きな苦痛であることに気づきました。そのため、Herokuのようなクラウドホスティングサービスにアプリケーションを登録しました(利用可能なものはどれでも選択できます。初心者向けの迅速で手間のかからない登録と優れたツールベルトセットのためにHerokuを選択しました)。私のドメインがmyapp.herokuapp.comになったことを投稿します。一度、StackExchangeアプリケーションのOAuthドメイン内でこれを指定し、myapp.heroku.com / blank.htmlを含むようにパラメーターを変更すると、すべてchannelUrlが機能し始め、StackExchangeAPIを使用してデータをフェッチできるようになります。

このソリューションにたどり着くのを助けてくれたStackExchangeサポート担当者とのディスカッションへのリンクを投稿しています。

うまくいけば、これは解決策にあなたを向けます。

于 2013-08-17T06:09:55.850 に答える