我正在使用Facebook登录工作我的第一个应用程序,并且在我登录后无法触发。您的facebook登录触发正常并让我登录,然后我&# 39; m转储回登录VC。
我在这里触发了segue:
indeterminateDrawable
以下是我的其他FB登录方法:
func loginButtonDidCompleteLogin(_ loginButton: LoginButton, result: LoginResult) {
switch result {
case .failed(let error):
print(error)
break
case .success(_,_,_):
print("login succeeded!")
self.performSegue(withIdentifier: "SearchVC", sender: self.user)
case .cancelled:
print("Canceled!")
}
}
我的观点:
func facebookButtonClicked(sender: UIButton) {
let loginManager = LoginManager()
loginManager.logIn(readPermissions: [.publicProfile], viewController: self) { loginResult in
switch loginResult {
case .failed(let error):
print(error)
case .cancelled:
print("User cancelled login")
case .success(let grantedPermissions, let declinedPermissions, let accessToken):
print("Logged in")
self.getFBUserData()
}
}
}
func getFBUserData() {
if FBSDKAccessToken.current() != nil {
FBSDKGraphRequest(graphPath: "me", parameters: ["fields": "id, name, email"]).start(completionHandler: { (connection, result, error) -> Void in
if error == nil {
self.userData = result as! [String : AnyObject]
print(result!)
print(self.userData)
}
})
}
}
在我的App代表中:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "SearchVC", let searchVC = segue.destination as? SearchVC {
searchVC.user = sender as? User ?? User()
}
}
segue在IB中连接,标识符为" SearchVC"
编辑:我最初尝试在FBSDKGraphRequest的完成块中执行segue,但它不会触发那里
我不是问如何执行segue,因为建议的重复问题表明
答案 0 :(得分:3)
您应该在ci_events_page.py:
stage: test
type: test
script:
- xvfb-run --server-args="-screen 0 1920x1080x24" pytest --driver Chrome ci/ci_events_page.py -v
完成时调用performSegue方法。
FBSDKGraphRequest
答案 1 :(得分:0)
该项目被窃听。我有另一个不执行代码的segue以及其他一些杂项块。删除我的public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
.....
if (Settings.System.canWrite(this) == false) {
// for first time, request user to grant file permission
requestPermissions(new String[] {
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE
}, 3000
);
} else {
// permission is already granted
// start watching path & write to file for test
watchPathAndWriteFile();
}
}
.....
......
// This function does 2 things:
// 1) watch path for files changes using "RecursiveFileObserver"
// 2) write to a file for testing
public void watchPathAndWriteFile() {
// the following path depends on your Android device. On my system, it is: "/storage/emulated/0/"
String path = Environment.getExternalStorageDirectory().getPath() + "/";
RecursiveFileObserver observer = new RecursiveFileObserver(path, this);
// start watching the path
observer.startWatching();
// if file "MyTestFile" not exist, new file is created. Else file is modified
try {
FileWriter out = new FileWriter(new File(Environment.getExternalStorageDirectory() + "MyTestFile"));
out.write("my file content for test...");
out.close();
} catch (IOException e) {
android.util.Log.e("writeStringAsFile", "Exception: " + e);
}
}
// in "onCreate", user is prompted to grant file read / write permission
// this function is invoked automatically after user allowed / denied permission
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
switch (requestCode) {
case 3000: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// user granted permission
// start watching for path & write to file for testing.
watchPathAndWriteFile();
} else {
// user denied permission
android.util.Log.e("Permission", "Denied");
}
return;
}
}
}
文件并重新创建它解决了所有问题