FBSDKAccessToken currentAccessToken nil after quitting appios9:FBSDK currentAccessToken
nilを私は多くの関連スレッドを見て、私の場合は解決策はまだ聞き取りにくいです。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions)
if let accessToken = FBSDKAccessToken.currentAccessToken(){
print(accessToken)
}else{
print("Not logged In.")
}
return true
}
func application(application: UIApplication,
openURL url: NSURL, options: [String: AnyObject]) -> Bool {
return GIDSignIn.sharedInstance().handleURL(url,
sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String,
annotation: options[UIApplicationOpenURLOptionsAnnotationKey])
}
func application(application: UIApplication, openURL url:NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
return FBSDKApplicationDelegate.sharedInstance().application(application, openURL: url,sourceApplication: sourceApplication, annotation: annotation)
}
だから、右のアプリのaccessToken
がnil
で起動します。ここでは
は私のAppDelegate.swiftファイルです。
アクセストークンをリフレッシュしようとすると、nilユーザーアクセストークンをリフレッシュできないため、アクセストークンがリフレッシュされません。私はおそらく期限切れのユーザートークンをキャッシュすると思います。期限が切れていても、現在のユーザトークンを返すFBSDKを呼び出すので、それはまだ変です。私の場合はnil
を返します。ここで
は、私は今後の参考のために私のcurrentAccessToken
func fetchFBInfoForLogin(){
let parameters = ["fields": "email, first_name, last_name"]
if (FBSDKAccessToken.currentAccessToken() != nil) {
print("current access token is not nil")
// User is logged in, do work such as go to next view controller.
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: nil)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
print("Error: \(error)")
}
else
{
print(result.valueForKey("id") as? String)
print(result.valueForKey("name") as? String)
print(result.valueForKey("email") as? String)
}
})
} else {
//refresh
FBSDKAccessToken.refreshCurrentAccessToken{ (connection, result, error) -> Void in
if error != nil {
print(error)
return
}
print(FBSDKAccessToken.currentAccessToken())
print("refresh doesn't work?")
let parameters = ["fields": "email, first_name, last_name"]
let graphRequest : FBSDKGraphRequest = FBSDKGraphRequest(graphPath: "me", parameters: parameters)
graphRequest.startWithCompletionHandler({ (connection, result, error) -> Void in
if ((error) != nil)
{
// Process error
print("Error: \(error)")
}
else
{
print(result.valueForKey("id") as? String)
print(result.valueForKey("name") as? String)
print(result.valueForKey("email") as? String)
}
})
}
}
}
を使用しようとする方法である: 私はこれがSOポストラà右AppDelegate
方法で私のFBSDKデリゲートの呼び出しを入れていませんでした。Facebook SDK login never calls back my application on iOS 9
だから私は手動でFBログインをクローズしなければならなかったので、コールバックの結果はresult.isCancelled
になり、なぜユーザートークンが得られなかったのですか?
私は 'result.isCancelled'のケースを処理していませんでした。これは、FBSDKデリゲートメソッドハンドラによって返されているものです。どういう意味ですか? – Thalatta
私は正直であるか分からない。 :-)私はコードがどこから来たのかを覚えていないでしょう。おそらくSOを2に変更しました。そして、通常はエラーかOKか、ほとんどの場合OKです。 – kometen