受け入れられた回答がないので、私が見つけたものを返信しようとします。上記のコメントの後、renewCredentialsForAccountのドキュメントを読んでください。「ユーザーがあなたのアプリを認証解除した場合、この更新リクエストはACAccountCredentialRenewResultRejectedを返します。」
Facebookを拒否するユーザーではないという誤解を招くのは何ですか。
私はこのコンセプトを理解していると思うし、私のようにこの問題で失敗した人に返信しようとしています。実際に私が気づいていなかったのは、ACAccountCredentialRenewResultRejectedという結果を受け取ったとき、FBトークンが完全にリセットされるということです。それがパズルの重要な要素です。
ですから、異なる結果のために何をする必要があるか:
- は、あなたが行ってもいいですし、あなたが新しいトークンを持っているをACAccountCredentialRenewResultRenewed。この更新されたトークンでSLRequestを実行してください。
- はをACAccountCredentialRenewResultRejected:あなたのトークンがあなたはそれがゼロなり1を取得しようとした場合、をリセットしています。ユーザーからのアクセス許可を一から要求し、Facebook用のアプリケーションを「インストールする」必要があります。つまり、最初に通常の「電子メール+その他の読み取りアクセス権」を求め、別の要求で書き込みアクセス権を要求します(必要な場合)。 (誰かがFacebookが写真をアップロードしたい場合にFacebookを2度気にする理由を説明できます)
- ACAccountCredentialRenewResultFailed:私はこれまでこれを再現できませんでした。私はここであなたにエラーメッセージをドロップすると信じています。
これは私が思いついたものです。これは非常に厄介なAPIであり、貧弱な文書とサンプルがありません。また、インターネット上の例は「成功」についてのもので、ユーザがアプリの外で権限を取り消すことはできないという事実は気にしない。私は一定の試行で&開発モードに失敗しています。灰色の髪を失うが、終わりに来る。私の反応が他人を助けることを願っています
facebookのアプリ設定ページからアプリを削除することで、この同じエラーを再現できます。ユーザーの許可を得るために許可要求のポップアップをもう一度行う必要があるように思えますが、私の電話でログアウトするまでポップアップは表示されません。 – ZachLHelms
次回にアプリを起動してログインしようとするときに 'renewCredentialsForAccount'呼び出しを行うと、アプリに権限を与えるよう促されます。私がその電話をしないと、私はそれをするように求められません。 – ZachLHelms
同じ問題があります。簡単に再現する:1)アプリケーションに一度許可を与える。2)FBグラフエクスプローラを終了せずにすべての権限をクリアする。3)renewCredentialsForAccountを試してみる。誰かがこれに対する解決策を見つけましたか? FB apiにcloseSessionsAndToken(またはこれに類似した)がこの問題を解決しました。しかし、社会的なapiについてはどうですか? – Teddy