簡體   English   中英

React native 無法將讀取權限(電子郵件)傳遞給發布授權請求

[英]React native Cannot pass a read permission (email) to a request for publish authorization

我正在 React Native 應用程序中實現 fb sdk。 我已經完成了鏈接中的所有更改,並在 android 設備中運行。 應用程序在 Facebook 登錄按鈕點擊時崩潰,這些是日志。

05-23 10:42:20.559 7063-7063/com.fbsample E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.fbsample, PID: 7063
    Cannot pass a read permission (email) to a request for publish authorization
        at com.facebook.login.LoginManager.validatePublishPermissions(LoginManager.java:444)
        at com.facebook.login.LoginManager.logInWithPublishPermissions(LoginManager.java:416)
        at com.facebook.login.widget.LoginButton$LoginClickListener.performLogin(LoginButton.java:753)
        at com.facebook.login.widget.LoginButton$LoginClickListener.onClick(LoginButton.java:725)
        at com.facebook.FacebookButtonBase$1.onClick(FacebookButtonBase.java:384)
        at android.view.View.performClick(View.java:4785)
        at android.view.View$PerformClick.run(View.java:19884)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:135)
        at android.app.ActivityThread.main(ActivityThread.java:5343)
        at java.lang.reflect.Method.invoke(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:372)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)

我搜索了很多,但沒有一個能幫助我擺脫這個問題。

至少錯誤應該包含一個建議。

我被困了幾個小時:/

facebook doc 沒有什么新鮮事。

我有FBLoginButton.js

    import React, { Component } from 'react';
    import { View } from 'react-native';
    import { LoginButton } from 'react-native-fbsdk';

    export default class FBLoginButton extends Component {
      render() {
        return (
          <View>
            <LoginButton
              publishPermissions={["email"]}
              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")}/>
          </View>
        );
      }
    };

    module.exports = FBLoginButton;

App.js

import React, { Component } from 'react';
import {
  Platform,
  StyleSheet,
  Text,
  View
} from 'react-native';
var FBLoginButton = require('./FBLoginButton');
const instructions = Platform.select({
  ios: 'Press Cmd+R to reload,\n' +
    'Cmd+D or shake for dev menu',
  android: 'Double tap R on your keyboard to reload,\n' +
    'Shake or press menu button for dev menu',
});

type Props = {};
export default class App extends Component<Props> {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.label}>Welcome to the Facebook SDK for React Native!</Text>
        <FBLoginButton />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

有人告訴為什么這個問題仍然存在,我可以做些什么來解決它。

您必須將publishPermissions={["email"]}更改為readPermissions={["email"]}

我將publishPermissions={["email"]}更改為publishPermissions={["publish_actions"]} ,一切正常。

如果您打算獲取用戶的電子郵件。 您必須使用readPermissions={['email']}LoginButtonreact-native-fbsdk 請注意,如果您已經像在您的問題中一樣使用publishPermissions={["email"]}構建了本機應用程序,請刪除該應用程序,然后重新構建。

此外,您只能使用readPermissionspublishPermissions ,而不能同時使用兩者。 這是按照此處記錄的設計: https : //developers.facebook.com/docs/reference/android/current/class/LoginButton/#setReadPermissions

如果您想在同一個應用程序上使用readPermissionspublishPermissions ,您必須再次調用登錄對話框。 react-native-fbsdk提供了LoginManager

LoginManager 類用於請求會話的額外權限或使用自定義 UI 提供登錄功能。 與 LoginButton 一樣,LoginManager 類是從 react-native-fbsdk 模塊加載的。 下面的示例以最少的權限執行登錄。 https://developers.facebook.com/docs/react-native/login

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM