WeChat 公開アカウントの外部リンク Web ページが、angular
を使用して シングルページ アプリケーション に作成されました。現在、WeChat Web ページの認証と js SDK
これまでに私が知っている限り、WeChat 認証を呼び出した後、シングルページ アプリケーションの入り口 URL は次のようになります (ドメイン名が example.com
であると仮定します):
①http://example.com?code=aaabbb/#/home
または (html5 mode
が有効な場合) は次のようになります:
②http://example.com/home?code=aaabbb
を参照できます。
?code=aaabbb
は、WeChat 認証後のリダイレクト時に入力されます。これによってのみ、WeChat 開発ドキュメント > コードの取得
今のところ問題はありません
Android WeChat クライアントは新しい H5 機能の PushState をサポートしていないため、URL ② は放棄されています (個人テスト、検証に合格しません)。そのため、入口 URL は次のようになります:
http://example.com?code=aaabbb/#/home
ここで問題が発生します。?code=aaabbb
がない場合、署名検証に合格し、js SDK を正常に呼び出すことができます。ただし、実際の状況では、承認が必要な場合は、?code=aaabbb
が必要です。が存在し、署名検証は失敗する必要があります。では、認証と SDK 呼び出しを利用できるようにするにはどうすればよいでしょうか? ? ?
私の現在の考えと実践は次のとおりです。WeChat が
http://example.com?code=aaabbb/#/home
へのリダイレクトを承認した後、コードを取得し、次にlocation.href = http://example.com/#/home
を取得します。これにより、ユーザー情報を取得して SDK を正常に呼び出すことができますが、問題は、アプリケーションに入るたびに が 2 回 更新され、ユーザー エクスペリエンスが非常に低下することです。たとえ強迫性障害であっても受け入れられません。
信頼できる解決策を教えてください
黄舟2017-05-15 17:14:10
純粋なフロントエンドは実装できません。許可コールバック ページのドメイン名をバックエンド サーバーに設定し、バックエンドからリダイレクトすることのみ可能です。
phpcn_u15822017-05-15 17:14:10
純粋なフロントエンドは実装できません。たまたま、私は最近同様のプロジェクトを実行しましたが、これも angularjs を使用し、angular-route.js を通じて単一ページのプログラムを実装しました。
単一ページ プログラム (index.html) で ajax を介してバックグラウンド インターフェイスを呼び出します。
成功した場合は、戻り値: {status:true,...}
ログインしておらず失敗した場合、戻り値: {status:falst,next: 'login',errmsg :'Error'}
その他のエラーが返されました: {status:falst,next:'次の操作',errmsg:'Error'}
戻りステータスが result.status==false の場合、 result.next=='login':
リーリーログインが成功したことを確認した後、SESSIONを設定した後、シングルページプログラム(index.html)にジャンプします。
すでにログインしているため、プログラムは引き続きインターフェイスを呼び出します。 、次を返します: {status:true ,...}