2017-10-03 9 views
0

Facebook AccountKitを使用してログインが完了したら、認証に使用された電話番号または電子メールを取得します。ドキュメントによれば、これはSDKで簡単なメソッド呼び出しです:Facebook AccountKit requestAccount iOSのセキュリティエラー

[accountKit requestAccount:^(id<AKFAccount> account, NSError *error) {...}]; 

はしかし、私はこのエラーを取得しておいてください。

[AccountKit][Error]: API calls from the server require an appsecret_proof argument

さて、私は彼らのクライアントを使用して電話を作っていますすべての最初のSDKはサーバーからではないため、エラーテキストは意味をなさない。私は有効なアクセストークンを持っているので、ユーザーはちょうどログインしています。

クライアントからの呼び出しにパラメータとしてappsecret_proofが必要であったとしても、requestAccountを呼び出すときにパラメータのフィールドはありません。

サーバーからのすべての呼び出しでセキュリティ保護のためにApp Secretを提供したいので、私のアプリでその設定をオフにしないでください。では、Require App Secret for server API callsがオンのときに、クライアントからrequestAccountに電話するにはどうすればいいですか?

答えて

0

私は、あなたのサーバーコールを秘密で保護しても、クライアント側の要求は保護されていないとは思わないと思います。あなたのクライアント側は、あなたのサーバーよりもハッキングの影響を受けやすいということを覚えておいてください。

シークレットでAKへのサーバーツーサーバーコールを既に行っているので、アカウント情報を取得してクライアントに戻す新しいコールをサーバー側から追加することをおすすめします。余分なセキュリティのため

、完全にクライアントのトークンの流れをオフにして唯一の私のクライアントは、単に認証を作成するために、クライアントからFBサーバーに電子メールを渡された以外のすべては、理にかなってコードフロー

+0

を使用しています。私はそれを渡すことができますが、それを戻すことはできません奇妙な。私は、AccessKitがその情報をローカルに保持し、サーバーへの安全でない呼び出しなしで提供できると思うだろう。コードを使用してサーバーから情報を取得するために、すべてをリファクタリングしました。 – Joel

+0

また、appsecret_proofが必要なときにクライアントSDKからのAPI呼び出しのようなエラーメッセージが表示されないようにする必要があります。クライアントはappsecret_proofをパラメータとして追加することさえサポートしていないためです。 – Joel

関連する問題