2017-01-28 7 views
0

FirebaseでFacebookにサインインする際に、一般的なFacebookユーザーIDとは異なるユーザーIDが表示されます(数字のみ)。 Firebaseは完全にアプリ固有のIDを生成しているため、プロフィール写真のURLを見つけることができません。Firebase - Facebookのプロフィール写真のURLをuidから取得しますか?

Firebase認証時に配信されるprofileImageURLが期限切れになり、これらのURLが期限切れになる可能性があるため、この情報をFirebaseデータベースに保存して他のユーザーがアクセスすることはできません。特定のユーザーがしばらく再認証を行わず、このprofileImageURLを期限切れにすると、ユーザーが再度ログインしない限り、他のユーザーはプロファイル写真を見ることができないとします。ユーザーが何年も活動していない場合はどうなりますか?プロフィール写真を取得する別の方法はありますか?

+0

ユーザーが認証されると、現在のユーザーは(Swift)let user = FIRAuth.auth()?currentUserで取得されます。ユーザー変数を取得したら、電子メール(email = user?.email)とそのphotoURL(photoURL = user?.photoURL)にアクセスできます。問題の内容を明確にすることはできますか? – Jay

+0

@Jay - 私が言ったように、ユーザーの.photoURLにアクセスすると、リンクは期限切れになっています。一部の人は、再度ログインすると更新する必要があると言いますが、そうではありません。しかし、たとえそれが機能したとしても、サインインした後にユーザーによって取り出された最新のリンクは最終的に失効するでしょう。これは、そのユーザーが非アクティブ(長期間)になると、ユーザーがリンクをまだ更新していないため、他のユーザーが有効なprofileURLにアクセスできなくなることを意味します。 –

+0

おそらくFirebaserのうちの1つが私を修正できますが、URLはURLです。それは作成されたFirebaseのuidに結びついているので期限切れになりません。そのため、ユーザーは任意の数のプロバイダーで認証され、そのユーザープロファイルデータは同じままになります。 – Jay

答えて

0

解決策が見つかりました。それはFirebaseドキュメントに存在しない:

id<FIRUserInfo> userInfo = [FIRAuth auth].currentUser.providerData[indexPath.row]; 
cell.textLabel.text = [userInfo providerID]; 
// Provider-specific UID 
cell.detailTextLabel.text = [userInfo uid]; 

[userInfo uid]は、ユーザーの実際のFacebookのIDです。これは、私が最新の写真のURLを取得するために使用できるものです。

関連する問題