React Native Facebook SDK ShareDialog просит войти снова - PullRequest
0 голосов
/ 02 октября 2018

В настоящее время я делаю проект, использующий реагировать нативно, где я должен позволить пользователям войти в систему с помощью Facebook.Поэтому я использую компонент React-native-fbsdk LoginButton, чтобы пользователи могли войти в систему и получить маркер доступа.Также часть проекта должна позволять пользователям делиться ссылками на свои профили.

Чтобы сделать это, я последовал за GitHub repo на Facebook, в котором говорится, как добавить ShareDialog.После добавления LoginButton и ShareDialog я запустил приложение.Вход прошел успешно, и я получил токен доступа.Но когда я пытаюсь поделиться ссылкой, он просит меня войти снова.Если я войду в систему с помощью ShareDialog, это позволит мне поделиться публикацией и всем, что и ожидалось.

Но если я выйду из системы с помощью LoginButton и после входа в систему через ShareDialog, оба компонента выполнят успешный выход из системы.Проблема в том, что вход в систему не обрабатывает оба компонента при одном входе.

Ниже приведен мой код.

render() {
return (
  <View style={styles.container}>
    <LoginButton
      publishPermissions={["publish_actions"]}
      onLoginFinished={
        (error, result) => {
          if (error) {
            alert("Login failed with error: " + error.message);
          } else if (result.isCancelled) {
            alert("Login was cancelled");
          } else {
            alert("Login was successful with permissions: " + result.grantedPermissions)
          }
        }
      }
      onLogoutFinished={() => alert("User logged out")}/>
    <TouchableHighlight onPress={this.shareLinkWithShareDialog}>
      <Text style={styles.shareText}>Share link with ShareDialog</Text>
    </TouchableHighlight>
  </View>
 );
}

shareLinkWithShareDialog = () => {

const shareLinkContent = {
  contentType: 'link',
  contentUrl: 'https://www.sample.com/',
  contentDescription: 'Test Sharing Description'
};
 var tmp = this;
 ShareDialog.canShow(shareLinkContent).then(
 (canShow) => {
    if (canShow) {
      return ShareDialog.show(shareLinkContent);
    }
  }
).then(
 (result) => {
    if (result.isCancelled) {
      alert('Share cancelled');
    } else {
      alert('Share success with postId: ' + result.postId);
    }
  },
 (error) => {
    alert('Share fail with error: ' + error);
  }
 );
}

Пожалуйста, помогите мне здесь.Я не могу определить, что с этим не так.

Примечание

Я проверил это с помощью Тестового пользователя Facebook, и у него также есть все соответствующие разрешения, включаяmanage_pages и у тестового пользователя есть собственная Тестовая страница тоже.

1 Ответ

0 голосов
/ 04 октября 2018

У меня возникла похожая проблема, потому что я не установил приложение Facebook на свой телефон.Похоже, ваш код в порядке.

Тем не менее, я не использовал опции «Тестовая страница» и «Тестовый пользователь» в Facebook, но я надеюсь, что они не отличаются от обычного пользователя, когда речь заходит о функциональности.Просто попробуйте установить приложение facebook и запустить приложение.Все должно быть в порядке.

...